I've been researching about how bash works, and so far I've learned the following things: When starting a login shell, the first of the following files that exists gets executed: `~/.bash_profile`, `~/.bash_login`, `~/.profile` When starting a non-login shell (or a sub-shell) that is interactive, the ~/.bashrc file gets executed. Also, .profile gets executed by other shells like sh. My question now is, what is the point of having a .bash_profile as well as a .bash_login? They both perform the same functions, and unlike .profile, both .bash_profile and .bash_login are both only read by bash. The only difference that I know between them is that .bash_login gets executed if .bash_profile is not present. So why is it there?