1#=============================================================================
2#
3# FILE NAME
4#
5# .bash_profile
6#
7# DESCRIPTION
8#
9# Unix startup file executed upon log in. If you want to run this file every
10# time you open a new Terminal window in Linux, you will need to change Gnome
11# settings as follows: go to Terminal->Preferences->Profiles, create a new profile
12# Under Command enable Run command as login shell.
13#
14# See also install documentation for various apps here:
15# http://seanerikoconnor.freeservers.com/WebDesign/macLinuxComputerSetupForDevelopers.html
16#
17# DATE
18#
19# 09 Jun 24
20#
21# AUTHOR
22#
23# Sean E. O'Connor
24#
25#=============================================================================
26#
27
28#------------- Portability -------
29#
30# Try to determine which system we are running on.
31
32#-----------------------------------------------------------------------------
33#--- Set the path
34#-----------------------------------------------------------------------------
35
36# Be sure to put useful scripts and executables into the home bin directory: ~/bin
37bins="/usr/local/bin:~/bin"
38
39# You need to set the hostname to get the correct configuration loaded.
40# On MacBook,
41# sudo hostname WhiteHusky"
42# sudo scutil --set LocalHostName WhiteHusky
43# sudo scutil --set ComputerName WhiteHusky
44# sudo scutil --set HostName WhiteHusky
45# In System Preferences/Sharing change 'Computer Name' to WhiteHusky if it's not already changed.
46# In your local network configuration, rename the name provided by DHCP.
47# On Ubuntu Linux, to change the hostname permanently,
48# hostnamectl set-hostname Gauss
49
50# Find out the hostname. In cygwin bash, strip off the trailing \r introduced.
51# The alternative is to use tr -d '\r'
52hostname=`python3 -c "import platform; print( platform.node() )" | sed 's/^[ \r\n\t]*$//'`
53#echo "hostname=|${hostname}|"
54
55# Find out which operating system we are running on: macOS, Linux, Windows/Cygwin, etc.
56uname=`uname -s`
57#echo "uname=|${uname}|"
58
59# macOS. Tested on my MacBook Pro laptop mid-2015 model with Intel x86_64 architecture.
60if [ "${uname}" == "Darwin" ] ; then
61 platform="macos"
62# Linux. Tested on my Ubuntu Linux system running on my Cyperpower PC with a 64-bit AMD CPU.
63elif [ "${uname}" == "Linux" ] ; then
64 platform="linux"
65# Cygwin. For cygwin 2.2 64-bit on Windows 10 64-bit. Not tested. From https://en.wikipedia.org/wiki/Uname
66elif [ "${uname}" == "CYGWIN_NT-10.0" ] ; then
67 platform="cygwin"
68else
69 echo "Can't identify OS platform = ${platform}. Exiting .bash_profile"
70 exit 1
71fi
72#echo "Using platform = ${platform}"
73
74if [ "${platform}" == "macos" ] ; then
75 py3bin="/Library/Frameworks/Python.framework/Versions/3.12/bin"
76 #printf "Using macOS System Python version path = ${PATH}\n"
77# Linux. Tested on my Ubuntu Linux system running on my Cyperpower PC with a 64-bit AMD CPU.
78elif [ "${platform}" == "linux" ] ; then
79 py3bin="/usr/local/bin:${HOME}/.local/bin"
80 #printf "Using Ubuntu Linux Python version path = ${PATH}\n"
81elif [ "${platform}" == "cygwin" ] ; then
82 py3bin="/usr/local/bin"
83 #printf "Using Cygwin Linux Python version path = ${PATH}\n"
84fi
85
86# Augmented path.
87PATH="${py3bin}:${bins}:${PATH}"
88#echo "Augmented path = ${PATH}"
89export PATH
90
91if [ "${platform}" == "macos" ] ; then
92 # Not quite the final path -- For macOS, add the path to brew and add export brew's environment variables.
93 # To see help documentation on this, run
94 # /opt/homebrew/bin/brew -h shellenv
95 eval "$(/opt/homebrew/bin/brew shellenv)"
96fi
97
98# CMake tool used for Blender.
99cmakebin="/Applications/CMake.app/Contents/bin/"
100
101# Latest version of make and ack.
102makebin="/usr/local/bin"
103
104# Final path.
105PATH="${HOME}:${makebin}:${cmakebin}:${PATH}"
106#echo "Final path = ${PATH}"
107export PATH
108
109# On Ubuntu Linux, run the Python virtual environment.
110if [ "${platform}" == "linux" ] ; then
111 #echo "Linux: set up Python virtual environment for all terminal windows"
112 if [[ -f ~/.VENV/bin/activate ]] ; then
113 source ~/.VENV/bin/activate # This was commented out by conda initialize
114 echo "Entering `python3 -V` virtual environment at ${VIRTUAL_ENV}. Type deactivate to exit."
115 else
116 echo "WARNING: No Python virtual environment on system. Recommend you set one up."
117 fi
118fi
119
120# Make sure Python 3 is installed on your system. Get the version and redirect from stderr to stdout.
121python_version=`python3 -V 2>&1`
122
123# Delete minor versions (numbers after the first dot), and spaces, e.g. Python 3.12.1 => Python3
124python_version_stripped=`echo ${python_version} | sed 's/\.[0-9]*//g' | sed 's/[ \r]//g'`
125
126#echo "Python version ${python_version} was detected"
127#echo "stripped version = ${python_version_stripped}"
128
129# Check the version and give help.
130if [ "${python_version_stripped}" != "Python3" ] ; then
131 echo "WARNING: Calling o l d python version ${python_version} stripped ${python_version_stripped} from `which python` in path $PATH"
132fi
133
134# Default settings.
135ls_color_option="-G"
136desk_dir="${HOME}/Desktop"
137thumb_dir="/Volumes/ALNILAM"
138extra_bin_path="/usr/local/bin"
139
140#------------- Export base directories for use by other programs -------------
141
142# The root directory has /Sean under it and /Sean/WebSite underneath that.
143export desk_dir
144export thumb_dir
145
146#echo "Root dir |${desk_dir}|, thumb dir |${thumb_dir}|, desk_dir |${desk_dir}|"
147
148#------------- Directory Shorthands -------------
149
150# Top level directories
151sean_dir="${desk_dir}/Sean"
152app_dir="${desk_dir}/App"
153export sean_dir
154export app_dir
155
156# Level 1 directories.
157arts_dir="${sean_dir}/Arts"
158business_dir="${sean_dir}/Business"
159family_dir="${sean_dir}/Family"
160science_dir="${sean_dir}/Sciences"
161web_dir="${sean_dir}/WebSite"
162export arts_dir
163export business_dir
164export family_dir
165export science_dir
166export web_dir
167
168# Quickly cd to subdirectories by typing cd subdir.
169# Need . in the list to avoid having to put ./ in front of directories.
170export CDPATH=.:~:${sean_dir}:${pp_src_dir}
171
172# Mac system tweaks.
173if [ "${platform}" == "macos" ] ; then
174 # Show hidden files in finder (needs a relaunch of finder).
175 defaults write com.apple.finder AppleShowAllFiles TRUE
176
177 # Screen shots are smaller JPG image files instead of PNG image files.
178 defaults write com.apple.screencapture type jpg
179 # You can bring up screencapture app using Command-SHIFT-5 and setting location to ~/Downloads
180
181 # XCode location.
182 # Some apps like opendiff, launched from git difftool will need to know this.
183 export DEVELOPER_DIR=/Applications/Xcode.app
184fi
185
186# Finish up the aliases.
187source .bashrc