/ 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.

4
задан 7 November 2016 в 23:06

1 ответ

Объяснение было дано эти hash команда:

команда хеша поддерживает хеш-таблицу, которая имеет используемые command’s пути. При выполнении команды она ищет команду в переменном $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, и это зафиксировало его.

5
ответ дан 7 November 2016 в 23:06

Другие вопросы по тегам:

Похожие вопросы: