首頁 > linux教程 > Linux文件和目錄管理 閱讀:0更新時間:2020-04-15 15:23:58

Linux命令執行過程(新手必讀)

 前面講過,在 linux 系統中“一切皆文件”,Linux 命令也不例外。那么,當編輯完成 Linux 命令并回車后,系統底層到底發生了什么事情呢?

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

1) 判斷路徑

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

2) 檢查別名

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'

3) 判斷是內部命令還是外部命令

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環境變量》一文做詳細了解。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩