farmer-logo.gif (14959 bytes) cshell-logo.gif (19625 bytes)
ch-4.gif (10100 bytes)
main-b.gif (271 bytes)
 

 

4-1 環境變數的設定影響(environment variables)

環境變數的設定目的在於管理 shell,這是它之所以重要的原因。它的特性相當於整體變數(global variable)。也就是說,你僅需要把環境變數設定在你的“.cshrc”檔案中,由 login shell 所產生的 subshell 或者是執行的 shell 文稿、程式或指令等,均不需再重新設定,便可以直接呼叫或使用該變數。所以環境變數是具有遺傳(inherited)性的。因為在 UNIX 作業系統中,由一個處理程序(process)會將它全部的環境變數遺傳給它所衍生出的子處理程序(child preoceese)。

譬如你在 login shell 之下執行一個 vi 指令,設定的 TERM 變數會決定使用何種終端機模式,同時 vi 程式本身也會繼承了原來的 login shell 所定義的所有環境變數,所以當你想要在 vi 程式中用指令“:sh”的方式產生一個新的 shell 時, vi 程式還會依據你所定義的 SHELL 變數,產生那個你所指定的 shell 的原因。當然因 vi 程式所產生的 new subshell,依然會繼承來自於 vi 程式的所有環境變數。

C shell 的環境變數全部都是以大寫字母命名。事實上這也是一個不成文的規定。所以當你要自行定義一些環境變數時,請你也能夠這樣做。設定環境變數的使用語法如以下所示:

設定語法 setenv ENVNAME string
解除設定語法 unsetenv variable
顯示所有設定 env

C shell 的環境變數並不多,僅有基本且重要的特殊資訊才被列入。如使用者的簽入目錄(login directory),存放郵件的目錄,終端機的模式,執行指令依據的搜尋路徑等。在這些環境變數中,部份會由系統依據某些特殊檔案內的資料,為使用者自動設定初始值。如 HOME 變數以及 USER 變數(有些 UNIX 版本不叫做 USER 變數,改稱為 LOGNAME 變數)的初設值便是來自於“/etc/passwd”檔案。又如 TERM 變數初始值是來自於檔案“/etc/ttytab”。除此之外,環境變數中的 HOME, PATH, MAIL, TERM 等,還會將它們的內容拷貝到相同名稱的預設變數中,以做為預設變數的初始值。不僅如此,這兩者之間還保有一種互動的關係,也就是其中的任何一方有改變,另一方變數也會自動地將變數內容更新。這些都是環境變數的特點。以下讓我逐一地為你介紹每一個 C shell 的環境變數。


mail.gif (2925 bytes)

b-line.gif (2092 bytes)