在shell中,內(nèi)建(builtin)命令hash,格式以下:
hash [-lr] [-p filename] [-dt] [name]
hash命令的作用是在環(huán)境變量PATH中搜索命令name的完全路徑并記住它,這樣以后再次履行相同的命令時,就沒必要搜索其完全路徑了,而且shell每次履行環(huán)境變量PATH中的1個命令時,hash都會記住它。當hash不指定任何參數(shù)時,顯示當前hash列表,包括每一個命令的完全路徑和履行次數(shù)。選項“-l”用于顯示當前hash列表中的命令及完全路徑等信息。選項“-r”用于清空hash列表。選項“-p filename”用于指定命令name的路徑,路徑filename是1個文件而非目錄。選項“-d”用于從hash列表中移除命令name對應(yīng)的記錄。選項“-t”用于顯示hash列表中命令name的完全路徑。成功履行時,hash命令的退出狀態(tài)為0。
以下是hash命令的幾個例子(啟動1個新的shell終端開始履行):
$ hash
hash: hash table empty
$ hash ls
$ hash top
$ ps > /dev/null
$ uname > /dev/null
$ uname > /dev/null
$ hash
hits command
1 /bin/ps
2 /bin/uname
0 /bin/ls
0 /usr/bin/top
$ hash -t ps
/bin/ps
$ hash -d uname
$ hash
hits command
2 /bin/ps
0 /bin/ls
0 /usr/bin/top
$ hash -l
builtin hash -p /bin/ps ps
builtin hash -p /bin/ls ls
builtin hash -p /usr/bin/top top
$ hash -r
$ hash
hash: hash table empty
我們也能夠自定義1個命令,例如“hash -p script_path foo”,命令的名字為foo,對應(yīng)的shell腳本的完全路徑為script_path,然后履行foo命令時,實際履行的就是其對應(yīng)的shell腳本。