我在 Ubuntu 12.04 服务器上遇到了一个奇怪的问题:
hithwen@ip:~$ cmake --version
cmake version 2.8.12.2
buildbot@ip:~$ cmake --version
cmake version 2.8.7
Run Code Online (Sandbox Code Playgroud)
所以,不同的用户在执行不同的版本,好吧,让我们看看他们在哪里:
hithwen@ip:~$ which cmake
/usr/local/bin/cmake
buildbot@ip:~$ which cmake
/usr/bin/cmake
Run Code Online (Sandbox Code Playgroud)
所以似乎我需要修复 buildbot 用户的路径,但是:
buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
/usr/local/bin已经是之前/usr/bin,我该如何解决这个问题?
我无法卸载该cmake软件包,因为其他软件包依赖于它,并且我无法通过存储库升级它,因为 12.04 存储库中没有最新版本。
hash命令给出了解释:
hash 命令维护一个散列表,其中包含所用命令的路径名。当您执行命令时,它会在变量 $PATH 中搜索命令。但是如果命令在哈希表中可用,它会从那里获取并执行它。
您可以使用 -d 选项从哈希表中删除特定命令
所以我做了:
buildbot@ip:~$ hash
hits command
3 /usr/bin/which
1 /usr/bin/vim
2 /usr/bin/cmake
buildbot@ip:~$ $ hash -d cmake
buildbot@ip:~$ hash
hits command
4 /usr/bin/which
1 /usr/bin/vim
buildbot@ip:~$ cmake --version
cmake version 2.8.7
buildbot@ip:~$ which cmake
/usr/bin/cmake
Run Code Online (Sandbox Code Playgroud)
为什么找不到/usr/local/bin/cmake?
$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied
Run Code Online (Sandbox Code Playgroud)
所以这个用户没有访问那个文件的权限。
我重新安装cmake并修复了它。
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |