Bash Init, .bashrc .profile .bash_profile
~/.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.
- The
.loginis legacy login init file for the original shell, thesh. BASH (Bourne-Again SHell) is a mostly compatible extended version. On many unix systems,/bin/shis hardlinked to/bin/bash. In Ubuntu Linux, 2006,/bin/shis a sym link to/bin/dash. Dash is new. “dash” is smaller and faster than bash, for running system startup scripts. - The
.profileis legacy shell init file for Bourne shell “sh”. - The
.cshis init file for C shellcsh. (basically, shell with C syntax.) - The
.tcshrcis init file fortcsh. (basically, improved csh)
Start bash without loading any init files
bash --noprofile --norc