命令调用位置与“which”命令输出不一致

命令调用位置与“which”命令输出不一致

我正在我的 CentOS 7 机器上安装protocolbuf,安装后,我在运行protoc编译器二进制文件时发现一些不一致的情况:

$  which protoc
/usr/local/bin/protoc 
$  protoc
bash: /bin/protoc: No such file or directory

这看起来肯定是错误的,我该如何解决这个问题?

答案1

有了现代的贝壳,他们记住您之前运行的命令的路径。因此,例如:

bash-4.2$ hash
hash: hash table empty
bash-4.2$ whoami
sweh
bash-4.2$ hash
hits    command
   1    /usr/bin/whoami

现在,如果您删除一个程序(在您的情况下/bin/protoc)并将其安装在新位置 ( /usr/local/bin/protoc),当前 shell 将尝试旧位置。它失败了,因为旧文件不存在。

您可以使用 告诉 shell 忘记所有记住的路径hash -r

这将迫使它再次搜索路径。

which命令不理解当前 shell 的哈希值。该type命令是一个更准确的 shell 内置命令。

相关内容