如果你熟悉DOS的話,你可以用dos中的command.com程序來幫助理解shell。它可以被認為是一種簡化的shell。shell是用戶和linux之間的接口,用戶輸入的每個命令都是由shell先解釋,然後再傳給linux內核的。有些命令是shell內建的,就好象dos的內部命令,例如顯示當前工作路徑命令pwd就是bash內部的;其它命令如同dos的外部命令是自己單獨的程序。
shell的另外一個重要特性就是,它自身就是一個解釋型程序設計語言。shell程序設計支持在高級語言裡能夠見到的絕大多數程序控制結構,關於這個,能夠單獨寫一本書^_^。我們還是回到正題,不過我們可以知道,shell命令完全可以完成在dos中象bat程序一樣的功能,而且更強、更方便、更隨和——隨便寫一個命令列表的文本文件,指定一個shell執行它或者把它的屬性改為可執行後直接運行就可以了。
shell在用戶成功的登錄系統後啟動,並始終作為與系統內核交互的手段,直至退出系統。
◆常用的shell
在linux系統裡,可以使用多種不同類型的shell。一般來說,在/etc目錄下會有個shells文件,該文件是目前系統中可用的shell類型列表。一般包括如下幾行:
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
而最常用的主要是Bourne shell(sh),C shell(csh)和Bourne Again Shell(bash)三種。
sh是UNIX最初使用的shell,並且在每一種UNIX上都可以使用。它在編程方面非常優秀,但和用戶的交互卻比較遜。
csh更多的考慮了界面的友好性,但普遍的認為C Shell的編程接口不如sh。由於它的編程語法和c比較相近,所以它還是被許多C程序員所使用。
bash是sh的擴展,並與sh完全兼容,並在吸取c和kon shell的優點的基礎上對sh增加了和增強了很多特性。它是大多數linux系統中默認的shell。下面我們將主要介紹bash的簡單使用。
bash的環境變量的設置主要是在/etc/profile文件裡,每個用戶還可以在自己的主目錄(剛登錄系統後的當前路徑)中的.bash_profile文件中定義自己的個人環境變量。注意,以點“.”開頭的文件在linux中是隱藏文件,使用ls的-a參數才能看見它們的存在。
我們比較關心的可能是這樣的一行
PATH="$PATH:/usr/X11R6/bin:/usr/sbin/:./"
通過下邊的export語句,這一句就象dos中設置path路徑一樣,所不同的主要有以下三點:
a、形式上用冒號分隔各個路徑單元,不象dos是用分號分隔;
b、內容上可以使用$PATH代替這個賦值等式前的路徑設置(注意,linux是區分大小寫的);
c、效果上這個路徑決定了bash查找的絕對范圍,不要認為bash會象dos自動先查找當前路徑,除非你在PATH中進行了設置。
你可以使用echo $PATH來顯示自己的當前PATH設置。
關於bash更詳細的幫助可以通過man bash命令獲得。
修改用戶缺省shell設置可以參考《搞清linux的用戶和組-基礎篇》的有關內容。