delorie.com/archives/browse.cgi | search |
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/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |