命令解釋程式shell是與使用者關係最密切的應用程式,使用者主要通過shell使用系統。在每次登入系統之後,就啟動了一個與使用者互動的shell,這個shell將給出一個提示符等待使用者輸入,(sh為 “$” ,csh為 “%” ,如果是使用root使用者,登入提示符將是 “#” ),然後對使用者的輸入進行解釋執行。
FreeBSD的基本系統中可以使用的shell有兩個:sh和csh。這兩個基本shell的風格不太相同,不同的使用者常常會根據喜好來在兩者之間進行選擇。當然當前有更好的shell程式可供使用者選擇,這些後續的 shell均是根據sh或csh的風格進一步發展出的,因此可以說在shell中,也有兩種風格,需要使用者根據自己的使用習慣進行選擇。
對於管理員來將,要為使用不同shell的使用者都設定好基本的環境,就必須瞭解這兩種風格的shell設定方式。系統登入時,sh將首先執行/etc/profile檔案,為每個使用者佈建最基本的環境,而csh將使用 /etc/csh.cshrc,csh.login和csh.logout作為系統csh資源檔。執行了系統層級的登入檔案之後,每個使用者的shell就在該使用者的主目錄下尋找該使用者個人的資源檔:sh使用.profile檔案,csh使用.login和.cshrc檔案。這些資源檔均使用相應的shell語言,/etc/profile和個人目錄下的.profile使用sh風格的控制語言,/etc/cshrc和個人目錄下的.login、.cshrc使用csh 風格的控制語言。系統管理員可以改動這些資源檔,為使用者提供一個最方便的使用環境。當然,系統管理員沒有必要直接去修改個人主目錄下的資源檔,這些檔案應該由使用者自己管理,但是系統管理員可以在產生帳號時為使用者產生預設的資源檔,以減輕使用者佈建資源檔的麻煩。adduser命令預設使用/usr/share/skel下的檔案為使用者提供各種資源檔的預設設定,這個目錄下除了可以放入shell的資源檔之外,還可以放入其他應用程式的資源檔。由於這些資源檔都是以點開頭的隱藏檔案,為了表示清楚,在skel目錄下使用了一種轉換方式,如使用dot.profile 作為.profile的模板。
# ls /usr/share/skel
dot.cshrc dot.mail_aliases dot.rhosts
dot.login dot.mailrc dot.shrc
dot.login_conf dot.profile
在/usr/share/skel中為使用者佈建的預設設定檔,在使用者產生之後,就不會對使用者產生影響了。因此對系統登入檔案進行修改更有效和直接。對於sh風格的使用者,可以更改/etc/profile檔案,對csh應更改 /etc/csh.cshrc檔案。在這些檔案中可以改動shell使用的環境變數,這樣來改變shell的行為方式,或者執行一系列自動操作,完成一些使用者登入時需要自動執行的任務。