This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: output allowed in .bashrc and .tcshrc (Was: Virus Found)


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]