Что определяет путь, по которому система ищет файл?

Что определяет путь, по которому система ищет файл?

Я пытаюсь получитьнпмдля работы. В процессе у меня, похоже, установлено две версии: поврежденная, установленная в ~/bin, и другая, которую я просто скомпилировал и запустил, make installчтобы поместить ее в /usr/local/bin/npm.

Итак, я переместил всю папку ~/bin в ~/old/bin... но при запуске npmсистема все равно ищет в ~/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
$

Что заставляет Ubuntu искать npm в ~/bin/npm? Я использую Ubuntu 11.10. Я не знаю, относится ли вопрос к Ubuntu или нет, его можно перенести в askubuntu, если нужно.

Я вижу ~/bin в PATH, но насколько я понимаю, это означает только то, что если бы npm присутствовал в ~/bin, то он бы его использовал... но почему bash настаивает на поиске именно там? Почему он не находит /usr/local/bin/npm, хотя whichкоманда его находит?

решение1

Ранее известное местоположение исполняемого файла, вероятно, хэшируется оболочкой. Сброс кэша оболочки с помощью hash -rдолжен исправить проблему.

Если вы не хотите сбрасывать весь кэш, вы можете удалить отдельную запись для npmиспользования hash -d npm.

Связанный контент