簡單來講,shell是一個執行命令的宏處理(macro processor)器。
術語宏處理器(macro processor)是指將文本和符號擴展到建立更大的表達式的功能。linux
Unix shell能夠做爲解釋器(interpreter)和編程語言使用。shell
看成爲命令解釋器使用時。shell爲用戶接口提供了豐富的GNU命令集,如 cd dir ls find ...等實用的命令。編程
看成爲編程語言時。shell特性容許將多個命令組合在一塊兒,能夠建立包含命令的文件,併成爲命令自己。
這些新命令在諸如「/bin」的目錄中具備與系統命令相同的狀態,容許用戶或組創建自定義環境來自動化它們的常見任務。異步
shell容許以同步和異步方式執行GNU命令。在接受更多輸入以前,shell將等待同步命令完成;異步命令在讀取和執行其餘命令時,繼續與shell並行執行。「重定向」構造容許對這些命令的輸入和輸出進行細粒度控制。此外,shell容許對命令環境的內容進行控制。
shell還提供了一組內置命令(「builtins」),實現功能不可能或不方便經過單獨的實用程序得到。例如,「cd」、「break」、「continue」和「exec」都不能在shell以外實現,由於它們直接操縱shell自己。「history」、「getopts」、「kill」或「pwd」的內置程序能夠在不一樣的實用程序中實現,但它們更便於做爲構建命令使用。後面的部分將描述全部的shell構建。編程語言
與其餘編程語言相同,shell也提供了變量,流程控制,引用,函數。ide
定義 | 解釋 |
---|---|
POSIX | 一個基於Unix的開放系統標準系列。Bash主要關注POSIX 1003.1標準的外殼和實用程序部分。 |
blank | 一個空格或者製表符 |
builtin | 由shell自己在內部實現的命令,而不是文件系統中的某個可執行程序。 |
control operator | 流程控制語句,執行控制功能的「令牌」。 |
exit status | 命令返回給它的調用者的值。該值限制爲8位,所以最大值爲255。 |
field | 一個文本單元,它是一個shell擴展的結果。擴展後,當執行一個命令時,結果字段被用做命令名和參數。 |
filename | 用於標識文件的字符串 |
job | 由管道組成的一組過程,以及由它派生的任何進程,它們都在同一個進程組中。 |
job control | 用戶能夠有選擇地中止(暫停)並重啓(恢復)進程的機制。 |
metacharacter | 當未被引用時,一個字符將單詞分開。元字符是一個「空白」或下列字符之一。'\', '&', ';','(', ')', '<', or '>'. |
name | 由字母、數字和下劃線組成的「單詞」,以字母或下劃線開頭。名稱被用做shell變量和函數名。也稱爲「標識符」。 |
operator | 「控制操做符」或「重定向操做符」。對於重定向操做符的列表。運算符包含至少一個未被引用的「元字符」。 |
process group | 每一個具備相同進程組ID的相關進程的集合。 |
process group ID | 在其生命週期中表示「進程組」的惟一標識符。 |
reserved word | 一個對shell有特殊意義的詞。大多數保留字引入了shell流控制結構,例如「for」和「while」。 |
return status | 「退出狀態」的同義詞。 |
signal | 一種機制,經過該機制能夠經過系統中發生的事件的內核來通知進程。 |
special builtin | 一個被POSIX標準分類爲特殊的shell內置命令。 |
token | 由shell層考慮單個單元的一系列字符。它要麼是一個「單詞」,要麼是一個「運算符」。 |
word | 由shell做爲單元處理的一系列字符。詞彙可能不包括未引用的「元字符」。 |