From the bash manpage:
When bash is invoked as an
interactive login shell, or as a
non-interactive shell with the
--login
option, it first reads and executes commands from the file
/etc/profile
, if that file exists.
After reading that file, it looks for
~/.bash_profile
, ~/.bash_login
, and
~/.profile
, in that order, and reads
and executes commands from the first
one that exists and is readable. The
--noprofile
option may be used when the shell is started to inhibit this
behavior.
When a login shell exits, bash
reads and executes commands from the
file ~/.bash_logout
, if it exists.
When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc
, if that file exists. This
may be inhibited by using the --norc
option. The --rcfile
file option
will force bash to read and execute commands from file instead of
~/.bashrc
.
Thus, if you want to get the same behavior for both login shells and interactive non-login shells, you should put all of your commands in either .bashrc
or .bash_profile
, and then have the other file source the first one.