Bash Users' Startup Files: Quick Start Guide
While the startup behavior of the bash shell can seem to require a Ph.D in Shellology, here we try to simplify the discussion to the minimum required to get you started. In general, every time you interactively access a TACC resource, Bash will source either your "
~/.profile" or "
~/.bashrc" file. Which one is sourced is complicated and not really important; see the troubleshooting notes below for some additional fine print. In either case, to get the same behavior in all of the interactive shells, you'll need to have your "
~/.profile" source the "
~/.bashrc" and put all the important statements in your "
# ~/.profile if [ -f ~/.bashrc ]; then source ~/.bashrc fi
One important idea is that every interactive sub-shell will source your
~/.bashrc. This means that if you wish to add personal directories to your
$PATH, you'll only want do it once. An environment variable (called "
MYPATH" in the example) can be used to enforce this behavior:
# ~/.bashrc if [ -z "$MYPATH" ]; then export MYPATH=1 export PATH=$HOME/bin:$PATH fi
A TACC user may wish to have many things defined every time on login such as:
- Certain modules loaded
- Define useful aliases and shell functions
- Add personal directories to PATH.
- Set environment variables
Rather than describe all these steps here we have sample startup scripts that you can copy and modify to suit. They can be found, on Maverick, here:
Your account may already have these files, but if not run the following script (on Maverick):
These scripts will be installed on Stampede shortly.
Then edit your new
~/.bashrc to suit.
To test always have one terminal to edit and another terminal to test with.
~/.profile" is not read during a login shell.
Check to see if your home directory contains "
~/.bash_profile" or "
~/.bash_login". For a login shell bash will search first for "
~/.bash_profile", if doesn't exist, then it searches for "
~/.bash_login". Finally it searches for a "
~/.profile". Please pick one of the three and stick with that.
For every sub-shell your path gets longer and longer.
Check to see if you are changing the PATH outside of a guarded if-block similar to the one above.
This quickstart guide covers the basics. For more information please look at the web. Here are two resources:
Last update: July 31, 2014