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


9

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

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

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


1
... например, когда у вас есть программа, которую вы только что перекомпилировали ... с тем же именем ... возможно, по другому пути ...
Hastur

@Hastur: я не уверен, если вы комментируете вопрос или утверждение. Если заявление, пожалуйста, пост в качестве ответа.
Кевинарпе

Ответы:


7

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

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

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


4

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

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

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

hash name

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

hash -d name

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

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


Хороший вопрос об установке части и точка на вашем пути.
Кевинарпе
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.