DotFiles#
aka configuration files / start-up files
When bash
is invoked as an interactive login shell, or as a non-interactive shell with the –login option, it first reads and executes commands from the file /etc/profile
, if that file exists. After reading that file, it looks for ~/.bash_profile
, ~/.bash_login
, and ~/.profile
, in that order, and reads and executes commands from the first one that exists and is readable. The –noprofile option may be used when the shell is started to inhibit this behavior.
When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc
, if that file exists. This may be inhibited by using the –norc option. The –rcfile file option will force bash
to read and execute commands from file instead of ~/.bashrc
.
~/.bash_profile#
Example of my ~/.bash_profile
:
1export BASH_SILENCE_DEPRECATION_WARNING=1
2export CLICOLOR=1
3export LSCOLORS=ExGxCxDxCxegedabagaced
4
5if [ -f ~/.bashrc ]; then
6 source ~/.bashrc
7fi
8
9eval "$(/opt/homebrew/bin/brew shellenv)"
From the bash man page:
“When bash is invoked as an interactive login shell, or as a non-interactive shell with the
--login
option, it first reads and executes commands from the file/etc/profile
, if that file exists. After reading that file, it looks for~/.bash_profile
,~/.bash_login
, and~/.profile
, in that order, and reads and executes commands from the first one that exists and is readable. The--noprofile
option can be used when the shell is started to inhibit this behavior.”
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc
, if that file exists. This can be inhibited by using the --norc
option. The --rcfile
file option will force bash to read and execute commands from file instead of ~/.bashrc
~/.bashrc#
Every new terminal window/tab that you open will load .bashrc
On a brand-new user account, none of these files will exist, they can be created with any suitable text editor that is capable of creating plain text files with Unix style (LF
) line endings. Save them into your home folder (~/
)
Example of my ~/.bashrc
file contains:
1if [ -e ~/.bash_aliases ]; then
2 source ~/.bash_aliases
3fi
4
5export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
Aliases are shortcuts that can save you from having to remember long commands and eliminate a great deal of typing when you are working on the command line
~/.bash_aliases#
Example of my ~/.bash_aliases
file:
1# aliases
2alias myconda='eval "$(/Users/van/Programs/miniforge3/bin/conda shell.bash hook)"; conda activate'
3
4# software
5alias chimera="/Applications/Chimera.app/Contents/MacOS/chimera"
6alias chimerax="/Applications/ChimeraX-1.5.app/Contents/MacOS/ChimeraX"
7alias iqmol="/Applications/IQmol.app/Contents/MacOS/IQmol"
8alias vmd="/Applications/VMD\ 1.9.4.app/Contents/MacOS/startup.command"
9
10# rsync
11alias rsyncnc='rsync -auvim --include "*/" --include "*/*nc" --exclude "*/*.*" --exclude "*/sinr*" --exclude "*/*/" --exclude "*/*" --exclude "*/*.out" --exclude "*/*.err"'
12alias rsynccv='rsync -auvim --include "*/" --include "*/*cv" --exclude "*/*.*" --exclude "*/sinr*" --exclude "*/*/" --exclude "*/*" --exclude "*/*.out" --exclude "*/*.err"'
13alias rsyncqm='rsync -auvim --exclude "*/qmhub/" --exclude "*/qmhub/*/" --exclude "*/qmhub/*/*"'