1. 程式人生 > >Shell 基本工作原理

Shell 基本工作原理

  Linux系統提供給使用者的最重要的系統程式是Shell命令語言解釋程式。它不屬於核心部分,而是在核心之外,以使用者態方式執行。其基本功能是解釋並執行使用者打入的各種命令,實現使用者與Linux核心的介面。系統初啟後,核心為每個終端使用者建立一個程序去執行Shell解釋程式。它的執行過程基本上按如下步驟:

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

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

(3)終端程序呼叫fork( )建立一個子程序。

(4)終端程序本身用系統呼叫wait4( )來等待子程序完成(如果是後臺命令,則不等待)。當子程序執行時呼叫execve( ),子程序根據檔名(即命令名)到目錄中查詢有關檔案(這是命令解釋程式構成的檔案),將它調入記憶體,執行這個程式(解釋這條命令)。

(5)如果命令末尾有&號(後臺命令符號),則終端程序不用系統呼叫wait4( )等待,立即發提示符,讓使用者輸入下一個命令,轉⑴。如果命令末尾沒有&號,則終端程序要一直等待,當子程序(即執行命令的程序)完成處理後終止,向父程序(終端程序)報告,此時終端程序醒來,在做必要的判別等工作後,終端程序發提示符,讓使用者輸入新的命令,重複上述處理過程。

  Shell基本執行過程及父子程序之間的關係如圖所示。