(這裡所指的 "rsh"[也可能是 "remsh" 或 "remote"] 是 remote shell, 而不是在有些系統中名為 "rsh" 的 restricted shell,這兩者天差地遠 了!)
若你在遠端的帳號用的是 C shell,那遠端的主機會幫你啟動一個 C shell 來完成你所下的那個 'command',這個 shell 會讀取你在遠端的 .cshrc 檔。若你的 .cshrc 中有 "stty" 或 "biff" 這類不適合 non- interactive shell 的指令。那就可能會有你所意想不到的結果,舉例來 說,若你把
stty erase ^H biff y放在你的 .cshrc 檔裡面。你可能會得到類似以下的奇怪訊息
% rsh some-machine date stty: : Can't assign requested address Where are you? Tue Oct 1 09:24:45 EST 1991若你使用 "at" 或 "cron",那可能也會得到類似的錯誤訊息。
不過沒關係,解決的方法非常簡單。若你的 ".cshrc" 裡面有一堆只有在 interactive shell 中才有用的 operation,那就將那些 operation 都用 以下的做法包起來:
if ( $?prompt ) then operations.... endif因為在一個 non-interactive 中不應該也沒有必要去設定 "prompt"。
還有一些只有在開啟一個 login session時才有用的東西,最好搬到 ".login" 中去。