На этот вопрос уже есть ответ здесь:
Недавно я полностью переключился на Linux из Windows, и пока я пытался обновить свой пакет npm
, используя n
, я получил новые двоичные файлы в / usr / local / bin
, а предыдущая версия была в / usr / bin
. Итак, он всегда выбирал предыдущую версию.
По рекомендации другого пользователя я использовал команду hash-r
, и она сработала. Но я не знаю, что он сделал.
Было бы очень полезно, если бы кто-нибудь мог объяснить мне его внутреннее устройство.
hash
встроенная команда эти bash
оболочка. Для сводки того, что это, можно ввести help hash
при приглашении оболочки:
$ help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
Remember or display program locations.
Determine and remember the full pathname of each command NAME. If
no arguments are given, information about remembered commands is displayed.
Options:
-d forget the remembered location of each NAME
-l display in a format that may be reused as input
-p pathname use PATHNAME as the full pathname of NAME
-r forget all remembered locations
-t print the remembered location of each NAME, preceding
each location with the corresponding NAME if multiple
NAMEs are given
Arguments:
NAME Each NAME is searched for in $PATH and added to the list
of remembered commands.
Exit Status:
Returns success unless NAME is not found or an invalid option is given.
Так, hash
помнит, что местоположения программы, и hash -r
забывают их.
Оболочка отслеживает, где исполняемые файлы, такие как npm находятся, чтобы избежать необходимости искать переменную окружения PATH каждый раз, когда Вы хотите выполнить что-то.
аргумент (сброса)-r хешу очищает кэш.
, Если Вы хотите видеть то, что хеш команд помнил, просто введите хеш самостоятельно без любых аргументов.
можно отключить кэш в целом путем ввода, устанавливает +h и re-renable это через-h
набора