首頁 > 軟體

Linux基礎之-Bash命令優先順序

2020-06-16 17:18:27

一. Bash簡介

命令直譯器,也就是 Bourne Again Shell,起源於shell。shell俗稱殼,它是指UNIX系統下的一個命令解析器;主要用於使用者和系統的互動。UNIX系統上有很多種Shell。首個shell,即Bourne Shell,於1978年在V7(AT&T的第7版)UNIX上推出。後來,又演變出C shell、bash等不同版本的shell。

Bash由於易用和免費,在日常工作中被廣泛使用。同時,Bash也是大多數Linux系統預設的Shell。在一般情況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改為#!/bin/bash#!告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的Shell程式。

二. 命令的優先順序

1. 獲取一個命令執行的優先順序別,至上往下

  alias

    compound commands

      function

        build_in

          hash

            $PATH

              error:command not found

2. 命令的分類

  alias(別名):是為了簡化輸出給一個長引數命令的整合,別名的定義方法 alias la='ls -al' 取消別名 unalias la;

  built_in(內部命令):bash自帶的命令 功能簡單,內部命令的幫助在builtin(1)裡;

  外部命令:就是一個小程式存在於/bin/ /sbin/ /usr/bin 等地方。

3. 命令的優先順序驗證

 a 驗證別名優先於內部命令和外部命令

 

  結論,命令的執行搜尋順序:別名 (alias可以檢視)——bash內部命令——$PATH 中按冒號分割的每個路徑中去搜尋
  b 驗證別名優先於複合命令(compound command)

  c 驗證複合命令優先於函數(function)

  d 驗證函數優先於內建命令

  結論,命令的執行搜尋順序:別名 (alias可以檢視)——複合命令——函數——bash內部命令——$PATH 中按冒號分割的每個路徑中去搜尋

  e 驗證hash優先於$PATH

  最終驗證結論為:命令的執行搜尋順序:別名 (alias可以檢視)——複合命令——函數——內建命令——bash內部命令——$PATH 中按冒號分割的每個路徑中去搜尋

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/142099.htm


IT145.com E-mail:sddin#qq.com