/ usr / local / bin primeiro no PATH, mas executável em / usr / bin encontrado primeiro

4

Estou tendo um problema estranho com um servidor Ubuntu 12.04:

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

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

Assim, usuários diferentes estão executando versões diferentes, ok, vamos ver onde eles estão localizados:

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

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

Por isso, preciso corrigir o caminho do usuário do buildbot, mas:

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

/usr/local/bin já está antes de /usr/bin , como posso resolver isso?

Eu não posso desinstalar o pacote cmake porque outros pacotes dependem dele e não posso atualizá-lo via repositórios porque a última versão não está disponível em 12.04 repos.

    
por hithwen 06.06.2014 / 09:33

1 resposta

3

A explicação foi dada pelo comando hash :

  O comando hash

mantém uma tabela de hash, que tem o caminho do comando usado   nomes. Quando você executa um comando, ele procura por um comando no   variável $ PATH. Mas se o comando estiver disponível na tabela de hash,   pega de lá e executa.

     

Você pode excluir um comando específico de uma tabela de hash usando a opção -d

Então eu fiz:

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 que não está encontrando /usr/local/bin/cmake ?

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

Este usuário não tem permissão para acessar o arquivo.

Eu reinstalei o cmake e corrigi-lo.

    
por hithwen 06.06.2014 / 10:04

Tags