output allowed in .bashrc and .tcshrc (Was: Virus Found)
Michael Schaap
cygwin@mscha.com
Tue Sep 11 03:10:00 GMT 2001
At 11:44 11-9-2001, David Starks-Browning wrote:
>On Tuesday 11 Sep 01, Corinna Vinschen writes:
> > ... If your login shell is bash and bash has been started by
> > rshd/sshd, it executes ~/.bashrc. So the rule is, no output in
> > ~/.bashrc.
Even .bashrc is only supposed to be called on interactive shells. (Unless
BASH_ENV = "$HOME/.bashrc" which it really shouldn't, but seems to be
commonly done.)
Unfortunately, both "ssh machine command" and "scp ..." _do_ run
.bashrc. I have no idea why, since
ssh machine 'echo $-'
shows that it is really a non-interactive shell.
> >
> > And, IIRC, the same rule applies for tcsh and ~/.cshrc.
Can't comment there, not a csh user
>Just to be precise and complete...
>
>That's almost correct. Your *are* allowed to generate output in
>.bashrc (and in .cshrc for tcsh) for *interactive* shells only. The
>usual way to test is to check for the existence of a prompt. ($PS1 in
>bash, $prompt in tcsh.) If no prompt is defined, you must not
>generate *any* output.
The documented way for Bash to check if a shell is interactive is by
checking if $- contains 'i'. For example:
if [[ $- = *i* ]] ; then
echo Interactive
fi
- Michael
--
I always wondered about the meaning of life. So I looked it
up in the dictionary under "L" and there it was - the meaning
of life. It was not what I expected. - Dogbert
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list