
我在使用 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
並修復了它。