为什么使用 sudo 会运行​​不同的版本?

为什么使用 sudo 会运行​​不同的版本?

首先,我从 repos 安装了 cmake 版本:

sudo apt-get install cmake

然后我发现我需要旧版本中没有的 cmake 功能,因此我卸载了 cmake:

sudo apt-get remove cmake

并从源代码安装:

wget http://www.cmake.org/files/v3.3/cmake-3.3.2.tar.gz
tar -xzf cmake-3.3.2.tar.gz
cd cmake-3.3.2/
./configure 
make
sudo make install

现在,sudo cmake .正确运行会生成一个makefile。

但运行cmake .会产生错误:

bash: /usr/bin/cmake: No such file or directory

重新安装存储库版本并比较输出:

cmake --version
sudo cmake --version 

表示当调用时,运行的是源版本sudo,当不调用时,运行的是存储库版本。

这里发生了什么?

我检查了$PATH包括/usr/local/bin /usr/bin,但我不知道还能去哪里找。

答案1

bash保留最近执行的文件及其位置的哈希表,因此不需要在PATH每次调用命令时进行搜索。

您可以使用 查看当前保存的哈希值hash。在其中查找cmake。要清除哈希表并重新进行bash搜索PATH,请执行以下操作

hash -r 

也可以看看精彩的解释。

相关内容