UNIX FAQ Version 2.1 92/12/04 -- Question 2.7

UNIX FAQ Version 2.1 92/12/04 -- Question 2.7

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.