Linux命令執行過程

2021-10-05 13:26:37 字數 1654 閱讀 8334

在 linux 系統中「一切皆檔案」,linux 命令也不例外。那麼,當編輯完成 linux 命令並回車後,系統底層到底發生了什麼事情呢?

簡單來說,linux 命令的執行過程分為如下 4 個步驟。

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

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

例如,我們經常使用的 rm 命令,其實就是 rm -i 這個整體的別名:

[root@localhost ~]# alias rm

alias rm='rm -i'

這使得當使用 rm 命令刪除指定檔案時,linux 系統會要求我們再次確認是否執行刪除操作。例如:

[root@localhost ~]# rm a.txt <-- 假定當前目錄中已經存在 a.txt 檔案

rm: remove regular file 'a.txt'? y  <-- 手動輸入 y,即確定刪除

[root@localhost ~]#

這裡可以使用 unalias 命令,將 linux 系統設定的 rm 別名刪除掉,執行命令如下:

[root@localhost ~]# alias rm

alias rm='rm -i'

[root@localhost ~]# unalias rm

[root@localhost ~]# rm a.txt

[root@localhost ~]#  <--直接刪除,不再詢問

注意,這裡僅是為了演示 unalisa 的用法,建議讀者刪除 rm 別名之後,再手動新增到系統中,執行如下命令即可再次成功新增:

[root@localhost ~]# alias rm='rm -i'

linux命令列直譯器(又稱為 shell)會判斷使用者輸入的命令是內部命令還是外部命令。其中,內部命令指的是直譯器內部的命令,會被直接執行;而使用者通常輸入的命令都是外部命令,這些命令交給步驟四繼續處理。

內部命令由 shell 自帶,會隨著系統啟動,可以直接從記憶體中讀取;而外部命令僅是在系統中有對應的可執行檔案,執行時需要讀取該檔案。

判斷乙個命令屬於內部命令還是外部命令,可以使用 type 命令實現。例如:

[root@localhost ~]# type pwd

pwd is a shell builtin  <-- pwd是內部命令

[root@localhost ~]# type top

top is /usr/bin/top  <-- top是外部命令

4) 查詢外部命令對應的可執行檔案

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

path 環境變數的改變,會直接影響 shell 查詢 linux 命令的過程,有關 path 環境變數(是什麼、如何檢視、如何修改等),可閱讀《linux path環境變數》一文做詳細了解。

linux下命令執行的過程

標籤 linux shell 2014 03 29 14 54 3638人閱讀收藏 舉報 在clui command line user inte ce 與gui對應 模式下,使用者是通過shell與系統互動的。什麼是shell?提示一,提示二 上述兩個材料得知shell也是乙個程式,它與其他程式最...

g gcc 命令 執行的過程

gcc g 現在是gnu中最主要和最流行的c c 編譯器 g 是c 的命令,以.cpp為主,對於c語言字尾名一般為.c。這時候命令換做gcc即可。其實是無關緊要的。其實編譯器是根據gcc還是g 來確定是按照c標準還是c 標準編譯鏈結。下面以test.cpp為例 命令 g test.cpp功能 生成預...

ping命令執行過程詳解

ping命令執行過程詳解 ping 是我們經常會接觸到的命令,但是大家對這個命令的了解有多少,這個命令的執行過程以及返回過來的資訊代表什麼意思呢?接下來我為大家逐一講解。先看一下 ping 的執行過程 就以這樣乙個網路作為例子 假設有a b c d四台機器,一台路由ra,子網掩碼均為255.255....