Why do I have to source ~/.bash_login every time I open Terminal

Solution 1:

Does it have to be .bash_login? Try renaming it to .profile.

Solution 2:

Bash only reads the .bash_login file if it's started as a login shell (was passed the --login flag). Try renaming it to .bashrc instead, which is evaluated when bash was invoked as an interactive shell without the --login flag.

Solution 3:

Make sure your .bash_login script doesn't contain relative paths like

source .profile

Change to

source ~/.profile

Lion changes the directory to your current tab or where your last session is, so all paths have to be absolute now.

Solution 4:

For me bash in Lion does not load ~/.profile either.

Adding source ~/.profile command to run at startup in shell preferences helped, but is quite unelegant.