I am using iTerm in Mac OS X 10.6. It seems when I open iTerm, neither
.bash_profile is sourced. I can tell because the aliases defined in
.bashrc are not set. How to fix?
Bash will source EITHER .bash_profile or .bashrc, depending upon how it is called. If it is a login shell, Bash looks for ~/.bash_profile, ~/.bash_login, or ~/.profile, in that order, and sources the first one it finds (and only that one). If it is not a login shell but is interactive (like most terminal sessions), Bash will source ~/.bashrc.
Likely, iTerm is looking for ~/.bashrc. If it's configured to start as a login shell, it will look for ~/.bash_profile. It's almost certainly an error within the config file rather than that the shell is not sourcing it.
I would put a line at the beginning of each file. At the top of ~/.bash_profile:
And at the top of ~/.bashrc:
Then, open a new iTerm and type
$ echo $BASH_CONF
That should confirm the file is being sourced and you can look into the syntax of the file.
I just wonder do you really use Bash? May be you can use
echo $SHELL, it is quite possible that you are using zsh, have you installed on-my-zh?
Acutually I encounter the same problem as you, I fix it by configuring ~/.zshrc instead either ~/.bash_profile for login shell or ~/.bashrc for non-login shell.
Maybe you can have a try
to the beginning of
/etc/profile. This gives you a line-by-line account of everything that gets executed when
bash starts up, including files sourced from within
~/.bash_profile, etc. It's a bit daunting if you don't understand
bash scripting very well, but you may be able to see if there is an error in a start-up file, and the output will be useful for someone proficient in
bash to help you locate your problem.
You can remove the
set -x line when you're finished troubleshooting.