題 怎麼能`哪個cmd`!= cmd?


有誰能解釋一下?

$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:47:31)
$ `which vim` --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 13 2011 22:52:17)

我剛剛編譯了最新版本的vim並將其安裝到了 $HOME/bin,這是第一條路 $PATHwhich vim 返回正確的路徑: /home/user/bin/vim但是,當我執行時 vim 它發射 /usr/bin/vim

我發起了另一個xterm並且問題已經消失,但是我仍然對前一個術語如何進入如此奇怪的狀態感到好奇。有任何想法嗎?


2
2017-10-14 03:31


起源




答案:


在UNIX中,當您運行命令時,shell會保存它找到二進製文件的路徑。如果您隨後更改路徑,或在路徑中較早的目錄中安裝其他版本,則shell將找不到它,因為它實際上並未搜索它已找到的命令。

如果您輸入了 hash -r 在比較哪個vim和vim之前,你就不會看到這種差異。


5
2017-10-14 05:10



這很有道理,謝謝。 - mwcz