9

В оболочке Bash есть встроенная команда hash -r для сброса внутреннего кеша $PATH для исполняемых файлов.

Когда необходимо использовать эту команду?

Связанный: Как перефразировать исполняемые файлы в $ PATH с помощью bash

2 ответа2

7

hash - встроенная команда bash. Хеш-таблица - это функция bash, которая предотвращает необходимость поиска $ PATH каждый раз, когда вы вводите команду, кэшируя результаты в памяти.

Поэтому, когда кэшированная / хранимая информация больше не обновляется и не действует, вам может потребоваться ее сброс.

Узнайте больше об этом хорошем ответе на Unix stackexchange.

3

Если вы ранее запускали программу в этом вызове оболочки, а затем устанавливали другую версию в более раннем каталоге в вашем списке поиска $PATH , вам нужно сбросить хэш, чтобы он нашел ее в новом месте. В противном случае он будет использовать кеш для поиска программы в старом месте.

Вам также необходимо сбросить хэш, если программа установлена в 2 каталогах в вашем $PATH , и вы удалите копию из более раннего расположения после ее запуска. В противном случае он попытается найти его в этом месте и сообщить "Нет такого файла или каталога" (лично я думаю, что он должен автоматически очистить хеш и выполнить полный поиск, когда это произойдет, но этого не произошло, когда я попытался ).

Обратите внимание, что вам на самом деле не нужно сбрасывать весь хеш, вы можете использовать:

hash name

заставить его обновить запись в кэше только для этого имени, или:

hash -d name

удалить только эту запись в кэше. Они оставляют все остальные записи кэша в покое.

Вам не нужно использовать hash -r после изменения $PATH , он будет сброшен автоматически, когда это будет сделано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .