Linux命令執行流程

2022-08-28 21:06:29 字數 1079 閱讀 8267

當我們執行一條命令的時候,整個命令執行流程如下:

1、判斷路徑

判斷使用者是否以絕對路徑或相對路徑的方式輸入命令(如/bin/ls),如果是的話,直接執行。

2、檢查別名

linux 系統會檢查使用者輸入的命令是否為「別名命令」。要知道,通過 alias 命令是可以給現有命令自定義別名的,即用乙個自定義的命令名稱來替換原本的命令名稱。

3、判斷使用者輸入的是內部命令還是外部命令

linux命令列直譯器(又稱為 shell)會判斷使用者輸入的命令是內部命令還是外部命令。其中,內部命令指的是直譯器內部的命令,會被直接執行;而使用者通常輸入的命令都是外部命令。

內部命令: shell 自帶,會隨著系統啟動,可以直接從記憶體中讀取

外部命令:在系統path變數的某個路徑下的可執行檔案

判斷乙個命令屬於內部命令還是外部命令,可以使用 type 命令檢視。

4、內部命令直接執行,外部命令檢測是否存在快取

5、檢測path路徑,有執行,無報錯。

當使用者執行的是外部命令時,系統會在指定的多個路徑中查詢該命令的可執行檔案,而定義這些路徑的變數,就稱為 path 環境變數,其作用就是告訴 shell 待執行命令的可執行檔案可能存放的位置,也就是說,shell 會在 path 變數包含的多個路徑中逐個查詢,直到找到為止(如果找不到,shell 會提供使用者「找不到此命令」)。

事實上執行過的外面命令都會儲存在內部快取中,當再次執行相同的命令,會通過快取調取執行,也就意味著不會搜尋path路徑。

總結,當我們執行乙個ping命令之後,整個命令執行的流程步驟如下:

1.檢查執行的是否是絕對路徑執行

2.檢查ping命令是否存在別名

3.檢查ping命令是內部命令還是外部命令

4.如果是內部命令直接執行

5.如果是外部命令,檢查ping命令是否有快取,如果沒有,查詢path變數

6.檢查path路徑直到查詢到該命令然後執行

7.如果沒有找到該命令則返回錯誤,command not found。

shell中命令的執行流程

在shell中,乙個命令有3中寫法 1 可以直接寫 normal command 2 可以放在雙引號中 command 3 可以放在單引號中 comand 這3中寫法,命令的執行流程也是不一樣的,如下圖所示 由pipe characte 分割command shell指令碼中,每一行文字稱為乙個pi...

shell中命令的執行流程

在shell中,乙個命令有3中寫法 1 可以直接寫 normal command 2 可以放在雙引號中 command 3 可以放在單引號中 comand 這3中寫法,命令的執行流程也是不一樣的,如下圖所示 由pipe characte 分割command shell指令碼中,每一行文字稱為乙個pi...

執行linux命令,cmd命令

exec dir output print r output exec 函式解析 exec 語法 string exec string command,string array int return var exec 返回值 字串 exec 引數說明 command 需要執行的命令 array 是輸...