shell是你(用戶(hù))和Linux(或者更準(zhǔn)確的說(shuō),是你和Linux內(nèi)核)之間的接口程序。你在提示符下輸入的每個(gè)命令都由shell先解釋然后傳給Linux內(nèi)核。
--------------------------------------------------------------------------------
注意: 如果你熟悉ms-dos,你將認(rèn)出這很象DOS 用戶(hù)和 COMMAND.COM之間的關(guān)系。唯
一的區(qū)別是command.com 的功能遠(yuǎn)不能和shell 相提并論。
--------------------------------------------------------------------------------
shell 是一個(gè)命令語(yǔ)言解釋器(command-language interpreter)。擁有自己內(nèi)建的 shell 命令集。此外,shell也能被系統(tǒng)中其他有效的Linux 實(shí)用程序和應(yīng)用程序(utilities and application programs)所調(diào)用。
不論何時(shí)你鍵入一個(gè)命令,它都被Linux shell所解釋。一些命令,比如打印當(dāng)前工作目錄命令(pwd),是包含在Linux bash內(nèi)部的(就象DOS的內(nèi)部命令)。其他命令,比如拷貝命令(cp)和移動(dòng)命令(rm),是存在于文件系統(tǒng)中某個(gè)目錄下的單獨(dú)的程序。而對(duì)用戶(hù)來(lái)說(shuō),你不知道(或者可能不關(guān)心)一個(gè)命令是建立在shell內(nèi)部還是一個(gè)單獨(dú)的程序。
附圖展示了 shell 是如何執(zhí)行命令解釋的,shell 首先檢查命令是否是內(nèi)部命令,不是的話再檢查是否是一個(gè)應(yīng)用程序,這里的應(yīng)用程序可以是Linux本身的實(shí)用程序,比如ls 和 rm,也可以是購(gòu)買(mǎi)的商業(yè)程序,比如 xv,或者是公用軟件(public domain software),就象 ghostview。然后shell試著在搜索路徑里尋找這些應(yīng)用程序。搜索路徑是一個(gè)能找到可執(zhí)行程序的目錄列表。如果你鍵入的命令不是一個(gè)內(nèi)部命令并且在路徑里沒(méi)有找到這個(gè)可執(zhí)行文件,將會(huì)顯示一條錯(cuò)誤信息。而如果命令被成功的找到的話,shell的內(nèi)部命令或應(yīng)用程序?qū)⒈环纸鉃橄到y(tǒng)調(diào)用并傳給Linux內(nèi)核。
shell的另一個(gè)重要特性是它自身就是一個(gè)解釋型的程序設(shè)計(jì)語(yǔ)言,shell 程序設(shè)計(jì)語(yǔ)言支持在高級(jí)語(yǔ)言里所能見(jiàn)到的絕大多數(shù)程序控制結(jié)構(gòu),比如循環(huán),函數(shù),變量和數(shù)組。shell 編程語(yǔ)言很易學(xué),并且一旦掌握后它將成為你的得力工具。任何在提示符下能鍵入的命令也能放到一個(gè)可執(zhí)行的shell程序里,這意味著用shell語(yǔ)言能簡(jiǎn)單地重復(fù)執(zhí)行某一任務(wù)。
聯(lián)系客服