`which cmd` 怎么会!= cmd?

`which 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,问题消失了,但我仍然很好奇之前的那个终端为什么会变成这样奇怪的状态。有什么想法吗?

答案1

在 UNIX 中,当您运行命令时,shell 会保存它找到二进制文件的路径。如果您随后更改路径,或者在路径较早的目录中安装不同的版本,则 shell 将找不到它,因为它实际上不会搜索已经找到的命令。

如果你之前输入过hash -r比较哪个 vim 和 vim,那么你就不会看到这种差异。

相关内容