在Shell中,有5種可調用的東西:別名(alias)、函數(function)、shell保留關鍵字、shell內置命令、外部命令。shell
若是它們同名了,那麼優先調用誰呢?可以使用type -a cmd
查看。函數
# 內置命令、別名、函數、外部命令 $ alias kill="echo haha" $ function kill()(echo hehe) $ type -a kill kill is aliased to `echo haha' # 1.別名kill kill is a function # 2.函數kill kill () { ( echo hehe ) } kill is a shell builtin # 3.內置kill kill is /usr/bin/kill # 4.外部kill # 別名、函數、保留關鍵字、外部命令 $ alias time="echo haha" $ function time()(echo hehe) $ type -a time time is aliased to `echo haha' # 1.別名 time is a shell keyword # 2.保留關鍵字 time is a function # 3.函數 time () { ( echo hehe ) } time is /usr/bin/time # 4.外部命令
例如:ui
# 調用外部命令time [root@me ~]$ command time echo haha [root@me ~]$ /usr/bin/time echo haha # 調用內置命令printf [root@me ~]$ alias printf="echo hehe" [root@me ~]$ printf hehe [root@me ~]$ builtin printf 'hello' hello
此外,可使用反斜線對命令轉義,使其跳過當前最高的優先級。可是,反斜線轉義的效果可能不會按照預料中順序的執行,因此最好不要用反斜線轉義。code
$ \time echo haha