Incorrect commandline history with bash

Jo Rhett 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  
> the
> bash man page.  The method I described above should become apparent
> afterwards.

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  
behavior.

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  
settings.

IMHO of course.

-- 
Jo Rhett
Net Consonance : consonant endings by net philanthropy, open source  
and other randomness




More information about the freebsd-ports mailing list