В оболочке 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
, он будет сброшен автоматически, когда это будет сделано.