Shell內置命令、外部命令、別名、函數、保留關鍵字的優先順序 在Shell中,有5種可調用的東西:別名(alias)、函數(function)、shell保留關鍵字、shell內置命令、外部命令。 如果它們同名了,那麼優先調用誰呢?可使用 查看。 內置命令、別名、函數、外部命令 $ alias ki ...
Shell內置命令、外部命令、別名、函數、保留關鍵字的優先順序
在Shell中,有5種可調用的東西:別名(alias)、函數(function)、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.外部命令
例如:
# 調用外部命令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
此外,可以使用反斜線對命令轉義,使其跳過當前最高的優先順序。但是,反斜線轉義的效果可能不會按照預料中順序的執行,所以最好不要用反斜線轉義。
$ \time echo haha