В оболочке Bash есть встроенная команда hash -r
для сброса внутреннего $PATH
кэша для исполняемых файлов.
Когда необходимо использовать эту команду?
Связанный: Как перефразировать исполняемые файлы в $ PATH с помощью bash
В оболочке Bash есть встроенная команда hash -r
для сброса внутреннего $PATH
кэша для исполняемых файлов.
Когда необходимо использовать эту команду?
Связанный: Как перефразировать исполняемые файлы в $ PATH с помощью bash
Ответы:
hash
это встроенная команда bash Хеш-таблица - это функция bash, которая не позволяет ему искать $ PATH каждый раз, когда вы вводите команду, кэшируя результаты в памяти.
Поэтому, когда кэшированная / хранимая информация больше не обновляется и не действует, вам может потребоваться ее сброс.
Узнайте больше об этом приятном ответе на Unix stackexchange .
Если вы ранее запускали программу в этом вызове оболочки, а затем устанавливали другую версию в более раннем каталоге в вашем $PATH
списке поиска, вам нужно сбросить хэш, чтобы он нашел ее в новом месте. В противном случае он будет использовать кеш для поиска программы в старом месте.
Вам также необходимо сбросить хэш, если программа установлена в 2 каталогах в вашей папке $PATH
, и вы удалите копию из более раннего расположения после ее запуска. В противном случае он попытается найти его в этом месте и сообщить «Нет такого файла или каталога» (лично я думаю, что он должен автоматически очистить хеш и выполнить полный поиск, когда это произойдет, но это не произошло, когда я попытался ).
Обратите внимание, что вам не нужно сбрасывать весь хеш, вы можете использовать:
hash name
заставить его обновить запись в кэше только для этого имени, или:
hash -d name
удалить только эту запись в кэше. Они оставляют все остальные записи кэша в покое.
Вам не нужно использовать hash -r
после изменения $PATH
, он сбрасывается автоматически, когда это сделано.