Bash Init, .bashrc .profile .bash_profile

By Xah Lee. Date: . Last updated: .

~/.bash_profile is loaded when you login.

~/.bashrc is loaded everytime you start a shell (e.g. starting a terminal), but is not loaded when you login the first time.

Note: Some terminals (such as gnome-terminal) have option to “run command as login shell”, meaning, if on, it'll load ~/.bash_profile (or ~/.profile) first, before running ~/.bashrc.

Note: on Mac OS X, the Terminal app starts as a login shell, so it runs ~/.bash_profile. Different unixes have different setup.

Here's a excerpt from man bash:

/etc/profile
The systemwide initialization file, executed for login shells
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
~/.bash_logout
The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
Individual readline initialization file

There's also {.login, .profile, …}. These are basically legacy that bash may also read.

Start bash without loading any init files

bash --noprofile --norc

Linux, Bash and Terminal