Difference Between .bashrc, .profile, .bash_profile, …?

By Xah Lee. Date: . Last updated: .

~/.bash_profile is loaded when you login. It is read only once.

~/.bashrc is loaded everytime you start a shell (For example, 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.

Bash/Terminal Topic

  1. Bash Keys, Terminal Keys, Man Page Keys
  2. Bash Prompt Setup
  3. Bash Color Prompt
  4. .bashrc, .profile, .bash_profile
  5. Virtual Console
  6. Terminal Control Sequence Keys
  7. Reset Terminal
  8. tmux
  9. man page
  10. Bash Manual in Chapters
  11. BASH Shell Misc Tips
  12. Log Terminal Session

If you have a question, put $5 at patreon and message me.