Linux Shell 工作原理

2022-02-22 18:26:28 字數 1822 閱讀 3388

linux系統提供給使用者的最重要的系統程式是shell命令語言解釋程式。它不屬於核心部分,而是在核心之外,以使用者態方式執行。

其基本功能是解釋並執行使用者打入的各種命令,實現使用者與linux核心的介面。系統初啟後,核心為每個終端使用者建立乙個程序去

執行shell解釋程式。它的執行過程基本上按如下步驟:

(1

)讀取使用者由鍵盤輸入的命令列。(2

)分析命令,以命令名作為檔名,並將其它引數改造為系統呼叫execve( )內部處理所要求的形式。(3

)終端程序呼叫fork( )建立乙個子程序。(4

)終端程序本身用系統呼叫wait4( )來等待子程序完成(如果是後台命令,則不等待)。當子程序執行時呼叫execve( ),

子程序根據檔名(即命令名)到目錄中查詢有關檔案(這是命令解釋程式構成的檔案),將它調入記憶體,執行這個程式(解釋這條命令)。

(5)如果命令末尾有&號(後台命令符號),則終端程序不用系統呼叫wait4( )等待,立即發提示符,讓使用者輸入下乙個命令,轉⑴。

如果命令末尾沒有&號,則終端程序要一直等待,當子程序(即執行命令的程序)完成處理後終止,向父程序(終端程序)報告,

此時終端程序醒來,在做必要的判別等工作後,終端程序發提示符,讓使用者輸入新的命令,重複上述處理過程。

linux系統的shell作為作業系統的外殼,為使用者提供使用作業系統的介面。它是命令語言、命令解釋程式及程式語言的統稱。 

shell是使用者和linux核心之間的介面程式,如果把linux核心想象成乙個球體的中心,shell就是圍繞核心的外層。

當從shell或其他程式向linux傳遞命令時,核心會做出相應的反應。

shell是乙個命令語言直譯器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程式所呼叫。

使用者在提示符下輸入的命令都由shell先解釋然後傳給linux核心。

有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,

是存在於檔案系統中某個目錄下的單獨的程式。對使用者而言,不必關心乙個命令是建立在shell內部還是乙個單獨的程式。

shell首先檢查命令是否是內部命令,若不是再檢查是否是乙個應用程式(這裡的應用程式可以是linux本身的實用程式,

如ls和rm,也可以是購買的商業程式,如xv,或者是自由軟體,如emacs)。然後shell在搜尋路徑裡尋找這些應用程式

(搜尋路徑就是乙個能找到可執行程式的目錄列表)。如果鍵入的命令不是乙個內部命令並且在路徑裡沒有找到這個可執行檔案,

將會顯示一條錯誤資訊。如果能夠成功找到命令,該內部命令或應用程式將被分解為系統呼叫並傳給linux核心。

shell的另乙個重要特性是它自身就是乙個解釋型的程式語言,shell程式語言支援絕大多數在高階語言中能見到

的程式元素,如函式、變數、陣列和程式控制結構。shell程式語言簡單易學,任何在提示符中能鍵入的命令都能放到乙個

可執行的shell程式中。

當普通使用者成功登入,系統將執行乙個稱為shell的程式。正是shell程序提供了命令列提示符。作為預設值

(turbolinux系統預設的shell是bash),對普通使用者用「$」作提示符,對超級使用者(root)用「#」作提示符。

一旦出現了shell提示符,就可以鍵入命令名稱及命令所需要的引數。shell將執行這些命令。如果一條命令花費了很長的

時間來執行,或者在螢幕上產生了大量的輸出,可以從鍵盤上按ctrl+c發出中斷訊號來中斷它(在正常結束之前,中止它的執行)。

當使用者準備結束登入對話程序時,可以鍵入logout命令、exit命令或檔案結束符(eof)(按ctrl+d實現),結束登入。

Linux Shell 工作原理

在clui command line user inte ce,與gui對應 模式下,使用者是通過shell與系統互動的。shell也是乙個程式,它與其他程式最大的不同是 它的目的是執行其他程式,而不是從事計算,繪圖,儲存等等具體事務。分析一下shell的工作原理有助於破除shell的神秘感,更好的...

Linux Shell性質和工作原理

linux系統的shell相當於作業系統的 一層外殼 它是命令語言直譯器,它為使用者提供了使用作業系統的介面。它不屬於核心,而是在核心之外以使用者態方式執行。它的基本功能是解釋並執行使用者打入的各種命令,實現使用者與linux核心的介面。個人理解 shell就是普通的使用者態程式,能夠理解使用者命令...

Linux shell程式設計原理 03

計算機只能識別二進位制指令 程式 指令 資料 根據服務的重心不同,我們分為面向過程程式設計,物件導向程式設計 a 面向過程 側重於指令的程式語言 b 物件導向 側重於資料的程式語言 高階語言 超高階語言需要翻譯成計算機可讀的語言 二級制指令 a 解釋型 逐行翻譯,逐行執行 解釋一行 執行一行 she...