next up previous
Next: 我要怎要用程式或者是在 shell script 中設定目前所用的 shell 的環境變數或改變所在的目錄? Up: 初學者可能會問的基本問題 Previous: 怎麼樣把 "*.foo" 改名為 "*.bar" 呢?怎樣把檔案名稱改成小寫呢?

為什麼我用 "rsh host command" 會有一些奇怪的訊息出現?

(這裡所指的 "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" 中去。



Tan Koan-Sin
1999-03-02