2021-05-12 14:32:11
Linux命令型別及執行順序
一、命令分類
Linux命令分為兩類,具體為內部命令和外部命令
內部命令:
指shell內部整合的命令,此類命令無需人為安裝,開機後自動執行在記憶體中,命令help檢視所有內部命令的詳情,如cd、type、echo、time、true等。
外部命令:
指通過外部媒介安裝的命令工具包,如通過yum、rpm等方式安裝,具體安裝路徑在$PATH下。
命令檢視:
type檢視命令分類,內部命令顯示 shell相關資訊,外部命令則顯示$PATH路徑,如下圖:
time屬於內部命令,date屬於外部命令。
二、命令執行順序
在命令執行過程中,命令形態主要分為4類:alias別名命令、內部命令、hash快取命令和外部命令。
範例:echo即是內部命令又是外部命令,以echo為例實驗證明其執行順序
1. 將/bin/echo 複製到/usr/local/bin/下,用which -a檢視echo的路徑($PATH中/usr/local/bin路徑優先於/bin,則echo優先使用/usr/local/bin/下的echo)
2.檢視內部echo,並關閉內部命令的echo,使用echo命令在hash中形成記錄,並檢視記錄
3. 刪除/usr/local/bin下的echo,hash中任然存echo的路徑/usr/local/bin,再次使用echo “welcome to xi'an”
結論:執行hash中的命令優先$PATH中的命令
4. 開啟內部命令echo,再次執行echo “welcome to xi'an”
結論:說明內部命令優先於hash快取命令和外部命令
5. 定義別名alias echo=“hostname”,如果echo 輸出是hostname的內容時,則表明alias比內部命令優先
總結:命令執行順序為alias——內部命令——hash快取——外部命令
三、命令分類及查詢基本命令
1. type command 檢視是否是內部命令
2. which -a| --skip-alias command 檢視所有包含command的路徑|不檢視別名的路徑
3. enable -n command 關閉內部命令
4. hash -l 顯示hash快取 -d 清楚具體快取命令路徑 -r 刪除所有命令路徑
5. alias 定義別名 ualias取消別名
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-08/146462.htm
相關文章