Por que o uso do sudo roda uma versão diferente?

2

Primeiro instalei a versão do cmake do repositório:

sudo apt-get install cmake

Então eu descobri que preciso do recurso do cmake que não está na versão mais antiga, então eu instalei o cmake:

sudo apt-get remove cmake

E instalado a partir da fonte:

wget http://www.cmake.org/files/v3.3/cmake-3.3.2.tar.gz
tar -xzf cmake-3.3.2.tar.gz
cd cmake-3.3.2/
./configure 
make
sudo make install

Agora, a execução de sudo cmake . gera corretamente um makefile.

Mas a execução de cmake . gera um erro:

bash: /usr/bin/cmake: No such file or directory

reinstalando a versão do repositório e comparando a saída de:

cmake --version
sudo cmake --version 

indica que a versão de origem está sendo executada quando sudo é chamado e a versão do repositório está sendo executada quando não é.

O que está acontecendo aqui?

Eu verifiquei que $PATH inclui /usr/local/bin antes /usr/bin , mas não sei onde mais procurar.

    
por MatrixManAtYrService 09.10.2015 / 06:30

1 resposta

1

bash mantém uma tabela de hash de arquivos executados recentemente e sua localização, portanto, não é necessário pesquisar PATH toda vez que um comando é invocado.

Você pode ver os hashes mantidos no momento com hash . Procure cmake lá. Para limpar a tabela de hash e tornar bash search PATH novamente, faça

hash -r 

Veja também this explicação maravilhosa

    
por Nephente 09.10.2015 / 08:53