Linux
‘which’ 報告一件事,實際命令是另一件事
我正在執行 Cmake v 2.8.7 附帶的 Ubuntu 12.04。
我需要更新的 CMake,所以我下載了 12.8.12.1 的原始碼,按照說明進行建構和安裝。最後一步,
make install
我執行了sudo
ed。./bootstrap make sudo make install
現在我想執行它,但是我發現
cmake
從命令行執行時仍然呼叫舊版本:jdibling@hurricane:/$ cd /; cmake --version; which cmake cmake version 2.8.7 /usr/local/bin/cmake jdibling@hurricane:/$
奇怪,我想。所以我
su
從那裡嘗試:root@hurricane:~# cd /; cmake --version; which cmake cmake version 2.8.12.1 /usr/local/bin/cmake root@hurricane:/#
為什麼
which
報同一個目錄,卻cmake --version
報不同版本?如何找到新cmake
的實際安裝位置?按照建議,我跑了
type
:jdibling@hurricane:/tmp/cmake-2.8.12.1$ type cmake cmake is hashed (/usr/bin/cmake) jdibling@hurricane:/tmp/cmake-2.8.12.1$ sudo su - root@hurricane:~# type cmake cmake is /usr/local/bin/cmake root@hurricane:~#
您應該使用該
type
命令來了解其名稱下的真正含義,即:type cmake
正如您所經歷的那樣,這可能是
alias
執行不同版本的cmake
,或者俱function
有類似行為的,或者最後是以前的hashed
命令,而該命令不再是您的 中的第一個命令PATH
。