用一條命令’pwd’判斷并證明系統命令的執行順序。

一、命令分類
    
    在Linux系統中命令分為兩類:
    
        1.內部命令:shell buildin 每次啟動系統都會重新加載入內存。
        2.外部命令:即某目錄下的文件,通過外部介質安裝的命令工具包,如通過yum、rpm等方式安裝,具體安裝路徑在$PATH下。

二、命令執行順序
    
    在命令執行過程中,命令形態主要分為4類:alias(別名命令)、內部命令、hash緩存命令和外部命令。

三、命令執行順序
    
    1. type command 查看是否是內部命令
    2. alias 定義別名 ualias取消別名
    3. enable command 啟用內部命令
              -n command 關閉內部命令
    4. hash 顯示hash緩存
            -d 刪除具體緩存命令路徑
    5. cp src dst/name 復制文件
    6. mv src dst  移動文件
    7. echo $PATH 顯示PATH的內容
    8. which -a  command  查看所有包含command的路徑
    9. rm 刪除文件
    

四、實例:‘pwd’即是內部命令又是外部命令,以‘pwd’為例實驗證明其執行順序

1.type命令判斷pwd命令是內部命令,新建alias pwd條目為ls命令并執行,結果為列出當前目錄文件,說明alias優先于內部命令。

    [root@h(Brad) etc]#type pwd
    pwd is a shell builtin
    [root@h(Brad) ~]#alias -p pwd=’ls’
    [root@h(Brad) ~]#pwd
    123      723.txt          dead.letter  Documents  install.log
    
2.禁用內部命令pwd,清空hash,執行pwd仍然顯示ls結果,說明不論內部命令是否啟用,都會執行alias。

    [root@h(Brad) etc]#enable -n pwd
    [root@h(Brad) ~]#hash -r
    [root@h(Brad) ~]#pwd
    123      723.txt          dead.letter  Documents  install.log
    
3.刪除aliaspwd,使用pwd命令,仍然有效,并且判斷為外部命令,hash路徑在/bin/pwd。說明相比外部命令,系統優先使用內部命令。

    [root@h(Brad) ~]#unalias pwd
    [root@h(Brad) etc]#pwd
    /etc
    [root@h(Brad) etc]#type pwd
    pwd is hashed (/bin/pwd)
    
4.刪除hash -d pwd,用hash -p命令創建一條pwd的hash,cp /sbin/ifconfig到/usr/sbin/pwd執行pwd結果為查看網絡信息。說明執行的是/usr/sbin/pwd,hash路徑優先。

    [root@h(Brad) etc]#hash -d pwd
    [root@h(Brad) ~]#cp /sbin/ifconfig /usr/sbin/pwd
    [root@h(Brad) ~]#hash -p /usr/sbin/pwd pwd
    [root@h(Brad) ~]#pwd
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:03:75:7F  
          inet addr:172.16.253.154  Bcast:172.16.255.255  Mask:255.255.0.0
    
    
5.顯示PATH路徑

    [root@h(Brad) etc]#echo $PATH
    /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    
6.hash -d 刪除pwd條目
  

    [root@h(Brad) etc]#hash
    hits    command
      20    /bin/grep
       1    /bin/pwd
    [root@h(Brad) etc]#hash -d pwd
    [root@h(Brad) etc]#hash
    hits    command
      20    /bin/grep
       2    /usr/sbin/groupadd

7.move pwd到/usr/sbin并執行,可以執行,并hash /usr/bin,說明在PATH的其他目錄中也可以執行,并hash。      

    [root@h(Brad) etc]#mv /bin/pwd /usr/sbin
    [root@h(Brad) etc]#pwd
    /etc
    [root@h(Brad) etc]#hash
    hits    command
      20    /bin/grep
       1    /usr/sbin/pwd
       
8.刪除hash中pwd ,cp /sbin/ifconfig到/bin/pwd并執行,執行pwd結果為查看網絡信息。說明執行的是/bin/pwd,在PATH中左面目錄為優先執行目錄。

    [root@h(Brad) etc]#hash -d pwd
    [root@h(Brad) etc]#cp /sbin/ifconfig /bin/pwd
    [root@h(Brad) ~]#which -a pwd                   
    /bin/pwd
    /usr/sbin/pwd[root@h(Brad) etc]#hash -d pwd
    [root@h(Brad) etc]#pwd
        eth0      Link encap:Ethernet  HWaddr 00:0C:29:03:75:7F  
          inet addr:172.16.253.154  Bcast:172.16.255.255  Mask:255.255.0.0
          
9.rm刪除/bin/pwd,執行pwd顯示找不文件,說明相比PATH順序,優先讀取hash中的緩存目錄命令。

    [root@h(Brad) ~]#rm /bin/pwd
    rm: remove regular file `/bin/pwd’? y
    [root@h(Brad) etc]#pwd
    -bash: /bin/pwd: No such file or directory
    
五、結論:系統執行命令的優先順序依次為:
alias——> shell builtin——> hash ——> PATH

原創文章,作者:manbinn,如若轉載,請注明出處:http://www.www58058.com/86057

(1)
manbinnmanbinn
上一篇 2017-09-02 21:08
下一篇 2017-09-03 14:40

相關推薦

  • http

    http 筆記整理

    Linux干貨 2018-01-31
  • N25-第11周博客作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 第一步:他們需要實現協商好對稱加密算法,單向加密算法,公鑰加密算法,交換公鑰等。 第二步:B用戶想要將數據傳給A,首先需要使用單向加密算法取出數據的特征碼,并用自己的私鑰對這段特征碼進行加密(數字簽名),B用戶生成臨時對稱密鑰,并用對稱密鑰加密整段數據,B用戶使用 A用戶的公鑰加密一次性對稱密鑰,附加在整段數據…

    Linux干貨 2017-05-21
  • 基于虛擬用戶控制的ftp服務

    FTP作為最常見的文件共享服務,可提供文件的上傳,下載等服務;其用戶可分為三類: 匿名用戶:即不需要用戶賬號與密碼即可登錄FTP服務器,此時登錄用戶將會被映射為系統上的ftp用戶。 系統用戶:即用FTP服務器上的用戶賬號與密碼登錄FTP服務器。此種方法雖然在一定程度上對登錄做出了限制,但由于系統賬號的相關權限,則增大了FTP服務器的系統風險; 虛擬用戶:用戶…

    Linux干貨 2016-10-23
  • btrfs管理和應用

    一、btrfs概念        在btrfs中存在三種類型的數據,data, metadata和system。它們表示:        DATA           數據塊。       &nbsp…

    系統運維 2016-04-12
  • 邏輯卷的創建、維護和遷移

    邏輯卷管理器(LVM)介紹: 1、允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小 2、允許在多個物理設備間重新組織文件系統 (1)將設備指定為物理卷 (2)用一個或者多個物理卷來創建一個卷組 (3)物理卷是用固定大小的物理區域(Physical Extent,PE)來 定義的 (4)在物理卷上創建的邏輯卷 是由物理區域(PE)組成 (5)可以在邏輯…

    Linux干貨 2017-12-10
欧美性久久久久