O que determina o caminho onde o sistema procura por um arquivo?

5

Estou tentando fazer com que o npm funcione. No processo, parece que tenho duas versões dele instaladas: uma corrompida instalada em ~ / bin e outra que acabei de compilar e executei make install para colocá-la em /usr/local/bin/npm .

Então, mudei toda a pasta ~ / bin para ~ / old / bin ... mas ainda quando executo npm o sistema pesquisa em ~ / bin:

$ which npm
/usr/local/bin/npm
$ alias npm
-bash: alias: npm: not found
$ npm
-bash: /home/ubuntu/bin/npm: No such file or directory
$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$

O que faz com que o Ubuntu procure por npm em ~/bin/npm ? Estou usando o Ubuntu 11.10. Eu não sei se a questão é específica do Ubuntu ou não, ela pode ser movida para o askubuntu, se necessário.

Eu vejo ~ / bin no PATH, mas até onde eu entendo isso só significa que se npm estivesse presente em ~ / bin então ele teria usado ... mas por que o bash insiste em procurá-lo especificamente? lá? Por que não encontra /usr/local/bin/npm , mesmo que o comando which o encontre?

    
por ripper234 19.03.2012 / 12:08

1 resposta

15

A localização previamente conhecida do executável provavelmente é dividida pelo shell. A redefinição do cache do shell com hash -r deve corrigir o problema.

Se você não quiser redefinir o cache inteiro, poderá excluir a entrada individual de npm usando hash -d npm .

    
por 19.03.2012 / 12:13