shell是什么幔翰?
Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼价捧,為用戶提供使用操作系統(tǒng)的接口烈和。它是命令語言周拐、命令解釋程序及程序設(shè)計(jì)語言。
shell是用戶和Linux內(nèi)核之間的接口程序凰兑,如果把Linux內(nèi)核想象成一個球體的中心妥粟,shell就是圍繞內(nèi)核的外層。當(dāng)從shell或其他程序向Linux傳遞命令時吏够,內(nèi)核會做出相應(yīng)的反應(yīng)勾给。
shell是一個命令語言解釋器,它擁有自己內(nèi)建的shell命令集锅知,shell也能被系統(tǒng)中的其他應(yīng)用程序所調(diào)用播急。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux核心。
有一些命令售睹,比如改變工作目錄命令cd,是包含在shell內(nèi)部的桩警。還有一些命令,比如拷貝命令cp和移動命令rm昌妹,是存在于文件系統(tǒng)中的某個目錄下的單獨(dú)的程序捶枢。對用戶來講,不必關(guān)心一個命令是建立在shell內(nèi)部還是單獨(dú)的程序飞崖。
shell首先檢查命令是否是內(nèi)部命令烂叔,若不是再檢查是否是一個應(yīng)用程序,然后shell在搜索路徑里尋找這些應(yīng)用程序固歪。如果鍵入的命令不是一個內(nèi)部命令并且在路徑里沒有找到這個可執(zhí)行文件蒜鸡,將會顯示一條錯誤信息。如果能夠找到命令,該內(nèi)部命令或應(yīng)用程序?qū)⒈环纸鉃橄到y(tǒng)調(diào)用并傳給Linux內(nèi)核逢防。
shell的另一個特性是它自身是一個解釋型的程序設(shè)計(jì)語言叶沛,shell程序設(shè)計(jì)語言支持絕大多數(shù)在高級語言中能見到的程序元素,如函數(shù)胞四、變量恬汁、數(shù)組和程序控制結(jié)構(gòu)。
shell的種類辜伟?
Linux中的shell有多種類型氓侧,其中最常用的幾種是bourne shell(sh)、c shell(csh)导狡、korn shell(ksh)约巷。三種shell各有優(yōu)劣。sh是Unix最初使用的shell旱捧,并且在每種Unix上都可以使用独郎。sh在shell編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如csh和ksh枚赡。
Linux默認(rèn)的shell是bourne again shell(bash)氓癌,它與sh完全向后兼容。bash放在bin/bash中贫橙,它有許多特色贪婉,可以提供如命令補(bǔ)全、命令編輯和命令歷史表等功能它還包含了很多csh和ksh中的優(yōu)點(diǎn)卢肃,有靈活和強(qiáng)大的編程接口疲迂,同時又有友好的用戶界面。
因此莫湘,我們至少得知道sh和bash都是Linux上的默認(rèn)shell尤蒿,而bash是sh的升級版。