怎么可以`which cmd` != cmd?

mwc*_*wcz 2 linux path

谁能解释一下?

$ 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)
Run Code Online (Sandbox Code Playgroud)

我刚刚编译了最新版本的vim并安装到了$HOME/bin,这是$PATH. which vim返回正确的路径:/home/user/bin/vim但是,当我执行vim它时启动/usr/bin/vim.

我启动了另一个 xterm 并且问题已经消失了,但是我仍然很好奇上一个术语是如何进入如此奇怪的状态的。有任何想法吗?

Mic*_*lon 5

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

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