As far as I know, the interactive shells may be login or not login, and the start up files for them are different.
- If interactive + login shell →
/etc/profile
then the first readable of~/.bash_profile
,~/.bash_login
, and~/.profile
- If interactive + non-login shell →
/etc/bash.bashrc
then~/.bashrc
I want to set some variables every time I use an interactive shell regardless whether it is a login shell or not.
Best Answer
No, there isn't. Yes, this is a design defect.
Use the following content in
~/.bash_profile
:Beware that bash has an even weirder quirk: when it is a non-interactive login shell and the parent process is
rshd
orsshd
, bash sources~/.bashrc
(but not~/.bash_profile
or~/.profile
). So you might want to put this at the top of your.bashrc
:See also Difference between .bashrc and .bash_profile and Difference between Login Shell and Non-Login Shell?