/usr/local/bin primero en PATH, pero el ejecutable en /usr/bin se encuentra primero

/usr/local/bin primero en PATH, pero el ejecutable en /usr/bin se encuentra primero

Tengo un problema extraño con un servidor Ubuntu 12.04:

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

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

Entonces, diferentes usuarios están ejecutando diferentes versiones, bueno, veamos dónde están ubicadas:

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

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

Entonces parece que necesito arreglar la ruta del usuario de buildbot pero:

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

/usr/local/binYa es antes /usr/bin, ¿cómo puedo solucionar esto?

No puedo desinstalar el cmakepaquete porque otros paquetes dependen de él y no puedo actualizarlo a través de repositorios porque la última versión no está disponible en los repositorios 12.04.

Respuesta1

La explicación la dio el hashcomando:

El comando hash mantiene una tabla hash, que tiene los nombres de ruta del comando utilizado. Cuando ejecuta un comando, busca un comando en la variable $PATH. Pero si el comando está disponible en la tabla hash, lo recoge desde allí y lo ejecuta.

Puede eliminar un comando particular de una tabla hash usando la opción -d

Así que lo hice:

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

¿Por qué no lo encuentra /usr/local/bin/cmake?

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

Entonces este usuario no tenía permiso para acceder a ese archivo.

Lo reinstalé cmakey eso lo solucionó.

información relacionada