2021-05-12 14:32:11
Linux基礎之-Bash命令優先順序
一. 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
相關文章