網路農夫 --  Home 網路農夫 --  Home
網路農夫 --  Home
wait.....

C shell 對其本身在整體的環境控制與部份功能的設定和使用上,都有專屬的變數,提供使用者自己設定與應用。同時在變數的型態上,也區分為環境變數(environment variables)與預設變數(predefined variables)兩種。前者相當於整體變數,而後者相當於區域變數。以下我們將為以這兩大分類來為你分別介紹 C shell 本身所制定的各種變數。

 

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 的環境變數。

 

版本:Beta-2001-05 -- 網路農夫