/usr/local/bin первый в PATH, но исполняемый файл в /usr/bin найден первым

/usr/local/bin первый в PATH, но исполняемый файл в /usr/bin найден первым

У меня возникла странная проблема с сервером Ubuntu 12.04:

hithwen@ip:~$ cmake --version
cmake version 2.8.12.2

buildbot@ip:~$ cmake --version
cmake version 2.8.7

Итак, разные пользователи запускают разные версии, хорошо, давайте посмотрим, где они находятся:

hithwen@ip:~$ which cmake
/usr/local/bin/cmake

buildbot@ip:~$ which cmake
/usr/bin/cmake

Похоже, мне нужно исправить путь пользователя buildbot, но:

buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

/usr/local/binуже было /usr/bin, как мне это решить?

Я не могу удалить cmakeпакет, так как от него зависят другие пакеты, и не могу обновить его через репозитории, так как последняя версия недоступна в репозиториях 12.04.

решение1

Объяснение было дано командованием 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

Почему не находит /usr/local/bin/cmake?

$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied

Значит, у этого пользователя не было разрешения на доступ к этому файлу.

Я переустановил cmakeи это исправило проблему.

Связанный контент