![`which cmd` 怎么会!= cmd?](https://linux22.com/image/1292405/%60which%20cmd%60%20%E6%80%8E%E4%B9%88%E4%BC%9A!%3D%20cmd%3F.png)
有人能解释一下吗?
$ 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
,这是中的第一个路径$PATH
。 which vim
返回正确的路径:/home/user/bin/vim
,但是,当我执行vim
它时会启动/usr/bin/vim
。
我启动了另一个 xterm,问题消失了,但我仍然很好奇之前的那个终端为什么会变成这样奇怪的状态。有什么想法吗?
答案1
在 UNIX 中,当您运行命令时,shell 会保存它找到二进制文件的路径。如果您随后更改路径,或者在路径较早的目录中安装不同的版本,则 shell 将找不到它,因为它实际上不会搜索已经找到的命令。
如果你之前输入过hash -r
比较哪个 vim 和 vim,那么你就不会看到这种差异。