Why do I get [some strange error message] when I "rsh host command" ?

Why do I get [some strange error message] when I "rsh host command" ?

(We're talking about the remote shell program "rsh" or sometimes
"remsh" or "remote"; on some machines, there is a restricted shell
called "rsh", which is a different thing.)

If your remote account uses the C shell, the remote host will
fire up a C shell to execute 'command' for you, and that shell
will read your remote .cshrc file. Perhaps your .cshrc contains
a "stty", "biff" or some other command that isn't appropriate for
a non-interactive shell. The unexpected output or error message
from these commands can screw up your rsh in odd ways.

Here's an example. Suppose you have

stty erase ^H
biff y

in your .cshrc file. You'll get some odd messages like this.

% rsh some-machine date
stty: : Can't assign requested address
Where are you?
Tue Oct 1 09:24:45 EST 1991

You might also get similar errors when running certain "at" or
"cron" jobs that also read your .cshrc file.

Fortunately, the fix is simple. There are, quite possibly, a
whole *bunch* of operations in your ".cshrc" (e.g., "set
history=N") that are simply not worth doing except in interactive
shells. What you do is surround them in your ".cshrc" with:

if ( $?prompt ) then
operations....
endif

and, since in a non-interactive shell "prompt" won't be set, the
operations in question will only be done in interactive shells.

You may also wish to move some commands to your .login file; if
those commands only need to be done when a login session starts
up (checking for new mail, unread news and so on) it's better to
have them in the .login file.



Home FAQ