Incorrect commandline history with bash
jrhett at netconsonance.com
Tue Sep 23 18:45:10 UTC 2008
On Sep 21, 2008, at 5:22 PM, Jeremy Chadwick wrote:
> Everyone lecturing me needs to read, slowly, the INVOCATION part of
> bash man page. The method I described above should become apparent
I'm sorry if you feel I'm lecturing you -- I'm not. I was just trying
to note that what you said seems to be backwards in my experience.
Moreover, the section of the man page you quoted backed up my analysis:
> 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.
It does not read ~/.bashrc. I have tested this and confirmed its
Now, I will go farther and mention the obvious:
> When an interactive shell that is not a login shell is
> started, bash reads and executes commands from
> ~/.bashrc, if that file exists.
However, this file is only read when and if you type "bash" after you
are already logged into the system in question.
In general, because of the way bash works, it would suggest that
putting variables you always want set in the .bashrc is correct, and
sourcing it from .bash_profile is also correct. Variables (like
terminal settings) which are only applied during login should be set
in .bash_profile. Sourcing .bash_profile from .bashrc means you'd
need some heft if/then code to avoid playing havoc with your terminal
IMHO of course.
Net Consonance : consonant endings by net philanthropy, open source
and other randomness
More information about the freebsd-ports