./bashrc doesn't run automatically

Got questions? Go ahead: Ask me anything!

Author: dhart
Date: Fri Apr 8 13:27:02 2005

Subject: ./bashrc doesn't run automatically

On a Red Hat system:
Linux Allied-2 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

my customer has played with webmin and did something to logins so that some users .bashrc doesn't get executed. Instead they find themselves at a $ prompt and if they type in ./.bashrc it runs fine.

-rwxr-xr-x 1 tom titan 168 Apr 7 15:27 .bashrc

I've compared ownership & permissions with users that work correctly, no joy.

Any Ideas?

Got something to add? Send me email.

(OLDER) <- More Stuff -> (NEWER)    (NEWEST)   

Printer Friendly Version

-> -> ./bashrc doesn't run automatically


Increase ad revenue 50-250% with Ezoic

More Articles by © dhart

Fri Apr 8 13:38:05 2005: 301   TonyLawrence

Well, for one, are you sure you understand what .bashrc is for?

Sounds to me like you are trying to use .bashrc for what .bash_profile should be used for. That's most definitely a path to disaster; see

The use of bashrc can be overridden by "--rcfile file" on startup - don't know if that's what webmin did do you, but you should NOT be using bashrc to start other programs: use .bash_profile or .profile.

Fri Apr 8 13:43:25 2005: 302   dhart

looks like .bashrc doesn't run if .bash_profile doesn't exist. go figure.

Fri Apr 8 13:51:00 2005: 303   TonyLawrence

No, that's not really what's happening, but .bashrc is NOT for starting programs (unless it's something that you want to run everytime any other shell script runs).

Logging a user into an app should be done in .bash_profile, not .bashrc

From the man page:
       When  bash is invoked as an interactive login

shell, or as a non-inter- active shell with the
--login option, it first reads and executes com-
mands 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.

So, yes, it won't run .bashrc without SOMETHING else to run, but again: it's purpose is NOT to start apps for users.. use .bash_profile for that.

Fri Apr 8 14:00:40 2005: 304   dhart

mmmm, yes, I see your point. The road to .bashrc is fraught with peril.

I had managed to avoid that trap by placing
exec /usr/local/bigbadshellscript in .bashrc.

Curious, then, that .bashrc is executable at all.

Kerio Samepage

Have you tried Searching this site?

Unix/Linux/Mac OS X support by phone, email or on-site: Support Rates

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us

An incompetent attorney can delay a trial for years or months. A competent attorney can delay one even longer. (Evelle J. Younger)

This post tagged: