2012-04-19 90 views
1

我在/ usr/bin中有一個「gtags」可執行文件,但這是一個較舊的。 然後我編譯了一個新的gtags,「make install」將它放在/ usr/local/bin中。 然後我刪除了/ usr/bin中的一個。但是當我在shell中鍵入「gtags」時,它告訴我「/ usr/bin/gtags」找不到。但是我在/ usr/local/bin中有一個「gtags」,而/ usr/local/bin在PATH中。另外,在我的PATH中,在/ usr/bin之前搜索/ usr/local/bin,爲什麼shell只在/ usr/bin中檢查「gtags」?Bash:如何搜索路徑中的可執行文件?

+0

檢查可執行文件的權限。另外驗證'哪個' – Abhijit 2012-04-19 11:48:37

+0

@Abhijit權限是好的,755.哪個gtags顯示「/ usr/local/bin/gtags」 – jiluo 2012-04-19 12:16:21

回答

3

使用bash的內置命令hash

[[email protected] ~]# touch /bin/test.sh 
[[email protected] ~]# chmod 755 /bin/test.sh 
[[email protected] ~]# test.sh 
[[email protected] ~]# mv /bin/test.sh /usr/local/bin/ 
[[email protected] ~]# test.sh 
-bash: /bin/test.sh: No such file or directory 
[[email protected] ~]# hash test.sh 
[[email protected] ~]# test.sh 

出現這種情況的原因是bash的「緩存」,其中二是在$ PATH所以也沒有那麼每次要時間來找到它運行。這是一個表現的事情。如果你運行沒有參數的「hash」,它會報告它運行的是哪個命令,有多少次,以及它從哪裏運行。

+0

謝謝!這真的很有用! – jiluo 2012-04-21 03:42:00

相關問題