Difference between .bash_profile and .bashrc Files
Posted by Admin on April 16th, 2007
According to the bash man page, .bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.
when you login when using a console, either physically at the machine or using ssh, .bash_profile is executed.
However, if you launch a terminal within a windowing system such as GNOME,KDE, launch the Emacs *shell* mode, or execute /bin/bash from within another terminal then .bashrc is executed.
Most people edit the files so one calls the other anyway.
To do this you need to open .bash_profile and uncomment the following lines (under the comment # include .bashrc if it exists):
if [ -f ~/.bashrc ];
then
source ~/.bashrc
fi
Now when we login to our machine from a console,.bashrc will get called.

April 17th, 2007 at 5:54 pm
Is there a system wide .bashrc like file? For interactive logons /etc/profile is sourced, but for non interactive I would really like to have a system wide file for all users without having to resort to making a .bashrc file on . /etc/profile.
Thanks
April 20th, 2007 at 8:02 am
yes there is /etc/bash.bashrc (in my Edgy at least).
February 8th, 2010 at 7:29 pm
Well I want both .bashrc and .bash_profile to be called whether from emacs shell or login. Having profile call rc works fine for login; but if emacs wants rc to call profile, you’d be creating an incredible infinite loop, right?
So put something like this in rc maybe? (or in each file?)
[ -z "RC_BEEN_THERE" ] || return
export RC_BEEN_THERE=”TRUE”
# etc….
source ~/.bash_profile
Or am I missing something obvious?
PS – it seems that on my lenny system, the login calls .bashrc for a *root* login, but not a user. What’s up with that?