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
二. 命令的優先級
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可以查看)——復合命令——函數——
e 驗證hash優先於$PATH
最終驗證結論為:命令的執行搜索順序:別名 (alias可以查看)——復合命令——函數——內置命令——bash內部命令——$PATH 中按冒號分割的每個路徑中去搜索
參考資料
1. http://www.cnblogs.com/linhaifeng/p/6592572.html#_labelTop
2. http://www.cnblogs.com/skywang12345/archive/2013/05/30/3106570.html#a12
Linux基礎之-Bash命令優先級