Excellent article.<p>I recently had the task of straightening out the default install of dotfiles we had at my job. Since we're behind a corporate firewall and require various HTTP proxies to hit the outside world I devised pretty much the same setup as explained in the article.<p>All of the environment exports are placed in .profile as, at the very least, I expect this to be sourced on a login shell. If there is a non-login shell, for the most part, most people tend to source it pretty early on in the process. The .bash_profile is kept around for diagnostic information for interactive shells such as the Ruby, Go, Node and Java versions of the machine you are logging into.<p>Because everyone tends to have their own dotfiles I hijacked the .bash_login to keep machine specific information which can be optionally sourced. This leads me to tell people to basically keep .profile and .bash_login out of their revision control and to source both of them relatively early on in the login process.<p>All .profile is for environment variables that are machine/network specific. If you have any overrides, e.g. aliases, all that goes into your .bash_login.<p>My .bash_profile:
<a href="https://github.com/johnbellone/dotfiles/blob/master/home/.bash_profile" rel="nofollow">https://github.com/johnbellone/dotfiles/blob/master/home/.ba...</a><p>My .bashrc
<a href="https://github.com/johnbellone/dotfiles/blob/master/home/.bashrc" rel="nofollow">https://github.com/johnbellone/dotfiles/blob/master/home/.ba...</a>