一、shell的概念
shell本身是一個用C語言編寫的程序,它是Linux系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。shell既是一種命令語言,又是一種程序設計語言。作爲命令語言,它交互式地解釋和執行用戶輸入的命令;作爲程序設計語言,定義了各種變量和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。
它雖然不是Unix/Linux系統內核的一部分,但它調用了系統核心的大部分功能來執行程序、建立文件並以並行的方式協調各個程序的運行。因此,我認爲深入瞭解和熟練掌握shell的特性極其使用方法,是用好Linux系統的關鍵。
二、shell的分類以及特點
Linux上常見的shell腳本解釋器有bash、sh、csh、ksh、zsh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell腳本解釋器。
bash是CentOS標準默認的shell,bash由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的縮寫。Linux使用它作爲默認的shell是因爲它有諸如以下的特色:
- 可以使用類似DOS下面的doskey的功能,用方向鍵查閱和快速輸入並修改命令。
- 自動通過查找匹配的方式給出以某字符串開頭的命令。
- 包含了自身的幫助功能,你只要在提示符下面鍵入help就可以得到相關的幫助。
sh:
sh 由Steve Bourne開發,是Bourne Shell的縮寫,sh是Unix標準默認的shell。
ash:
ash shell 是由Kenneth Almquist編寫的,Linux中佔用系統資源最少的一個小shell。
csh:
csh 是Linux比較大的內核,它由以William Joy爲代表的共計47位作者編成。該shell其實是指向/bin/tcsh這樣的一個shell,也就是說,csh其實就是tcsh。IBM小型機用的就是csh。
ksh:
ksh 是Korn shell的縮寫,由Eric Gisin編寫,共有42條內部命令。該shell最大的優點是幾乎和商業發行版的ksh完全兼容,這樣就可以在不用花錢購買商業版本的情況下嘗試商業版本的性能了。
zsh:
zsh是功能最強大的shell,也是最複雜的shell。