Skip to content

Instantly share code, notes, and snippets.

@hfreire
Last active March 25, 2024 20:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hfreire/94a7c0cdd7b0f603a6f1dd6acfd7213f to your computer and use it in GitHub Desktop.
Save hfreire/94a7c0cdd7b0f603a6f1dd6acfd7213f to your computer and use it in GitHub Desktop.
bash startup load order
If you have ever put something in a file like .bashrc and had it not work, or are
confused by why there are so many different files — .bashrc, .bash_profile, .bash_login,
.profile etc. — and what they do, this is for you.
The issue is that Bash sources from a different file based on what kind of shell it thinks
it is in. For an “interactive non-login shell”, it reads .bashrc, but for an “interactive
login shell” it reads from the first of .bash_profile, .bash_login and .profile (only).
There is no sane reason why this should be so; it’s just historical. Follows in more detail.
For Bash, they work as follows. Read down the appropriate column. Executes A, then B, then C,
etc. The B1, B2, B3 means it executes only the first of those files found.
+----------------+-----------+-----------+------+
| |Interactive|Interactive|Script|
| |login |non-login | |
+----------------+-----------+-----------+------+
|/etc/profile | A | | |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc| | A | |
+----------------+-----------+-----------+------+
|~/.bashrc | | B | |
+----------------+-----------+-----------+------+
|~/.bash_profile | B1 | | |
+----------------+-----------+-----------+------+
|~/.bash_login | B2 | | |
+----------------+-----------+-----------+------+
|~/.profile | B3 | | |
+----------------+-----------+-----------+------+
|BASH_ENV | | | A |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
|~/.bash_logout | C | | |
+----------------+-----------+-----------+------+
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment