/usr/local/bin 在 PATH 中第一個,但在 /usr/bin 中先找到可執行檔

/usr/local/bin 在 PATH 中第一個,但在 /usr/bin 中先找到可執行檔

我在使用 Ubuntu 12.04 伺服器時遇到了一個奇怪的問題:

hithwen@ip:~$ cmake --version
cmake version 2.8.12.2

buildbot@ip:~$ cmake --version
cmake version 2.8.7

那麼,不同的用戶正在執行不同的版本,好吧,讓我們看看它們位於哪裡:

hithwen@ip:~$ which cmake
/usr/local/bin/cmake

buildbot@ip:~$ which cmake
/usr/bin/cmake

所以看來我需要修復 buildbot 用戶的路徑但是:

buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

/usr/local/bin已經是之前的事了/usr/bin,我該如何解決這個問題?

我無法卸載該cmake軟體包,因為其他軟體包依賴它,而且我無法透過儲存庫升級它,因為最新版本在 12.04 儲存庫中不可用。

答案1

命令給了解釋hash

hash 指令維護一個哈希表,其中包含所使用指令的路徑名。當您執行命令時,它會在變數 $PATH 中搜尋命令。但是,如果該命令在哈希表中可用,它就會從那裡獲取並執行它。

您可以使用 -d 選項從雜湊表中刪除特定命令

所以我做了:

buildbot@ip:~$ hash
hits    command
   3    /usr/bin/which
   1    /usr/bin/vim
   2    /usr/bin/cmake

buildbot@ip:~$ $ hash -d cmake
buildbot@ip:~$ hash
hits    command
   4    /usr/bin/which
   1    /usr/bin/vim
buildbot@ip:~$ cmake --version
cmake version 2.8.7
buildbot@ip:~$ which cmake
/usr/bin/cmake

為什麼找不到/usr/local/bin/cmake

$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied

因此該使用者無權存取該文件。

我重新安裝cmake並修復了它。

相關內容