Apple - What is the difference between .bash_profile and .bashrc?
.bash_profile
is executed for login shells, while .bashrc
is executed for interactive non-login shells.
When you login (type username and password) via console, either sitting at the machine, or remotely via ssh: .bash_profile
is executed to configure your shell before the initial command prompt.
But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc
is executed before the window command prompt. .bashrc
is also run when you start a new bash instance by typing /bin/bash
in a terminal.
On OS X, Terminal by default runs a login shell every time, so this is a little different to most other systems, but you can configure that in the preferences.
X11 will look at your .bashrc
while a "regular" Terminal will look at .bash_profile
However, if you add the following to your .bash_profile
, you can then move everything into your .bashrc
file so as to consolidate everything into one place instead of two:
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
fi
For macOS, the code to put into .bash_profile
to consolidate everything into .bashrc
is the following:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
This is more specific for Mac terminal user.