I have defined three aliases in my .bash_profile
but my bash shell is not reading it. The aliases defined are not working in my terminal and I couldn\'t resolve
Assuming:
bash
is indeed your shell (as is the default on OS X)then ~/.bash_profile
should be loaded for every interactive shell, because both terminal programs create login shells by default.
Bash login shells source ~/.bash_profile
, but not ~/.bashrc
.
Note that this differs from most Linux distros, where a single login shell is executed on startup, and later interactive shells are non-login shells, which only load ~/.bashrc
, not ~/.bash_profile
.
A frequently seen technique to ensure that definitions are loaded in both login and non-login interactive shells is to place definitions in ~/.bashrc
, and then source it from ~/.bash_profile
, using the following line:
[[ -f ~/.bashrc ]] && . ~/.bashrc
You can create a login shell on demand by executing bash -l
from an existing shell; if that loads your aliases, then the problem must be with what your default shell is and/or how your terminal program is configured.
echo $SHELL
tells you what your default shell is.Terminal > Preferences...
, tab General
, setting Shells open with
tells you whether the default shell or a custom shell is being used.