1. 程式人生 > >linux命令類型及執行順序

linux命令類型及執行順序

linux基本命令分類及執行原理

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取消別名

本文出自 “11831715” 博客,請務必保留此出處http://11841715.blog.51cto.com/11831715/1947813

linux命令類型及執行順序