環境變數的設定目的在於管理 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 的環境變數。