Chen Xie Asked: 2020-02-11 15:49:55 +0800 CST2020-02-11 15:49:55 +0800 CST 2020-02-11 15:49:55 +0800 CST 命令调用位置与 `which` 命令输出不一致 772 我protocolbuf在我的 CentOS 7 机器上安装,安装后,我在运行protoc编译器二进制文件时看到了一些不一致: $ which protoc /usr/local/bin/protoc $ protoc bash: /bin/protoc: No such file or directory 这肯定看起来不对,我该如何解决这个问题? centos binary 1 个回答 Voted Best Answer Stephen Harris 2020-02-11T16:14:40+08:002020-02-11T16:14:40+08:00 使用现代 shell,它们会记住您之前运行的命令的路径。因此,例如: 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。
使用现代 shell,它们会记住您之前运行的命令的路径。因此,例如:
现在,如果您删除一个程序(在您的情况下
/bin/protoc
)并将其安装在新位置(/usr/local/bin/protoc
),当前 shell 将尝试旧位置。它失败了,因为旧文件不存在。你可以告诉 shell 忘记所有记住的路径
hash -r
。这将迫使它再次搜索路径。
该
which
命令不理解当前 shell 的哈希值。该type
命令是一个更准确的内置 shell。