Коли переробляти виконувані файли в $ PATH з bash?


9

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

Коли потрібно використовувати цю команду?

Пов’язано: Як переробити виконувані файли в $ PATH за допомогою bash


1
... наприклад, коли у вас є програма, яку ви щойно перекомпілювали ... з тим же ім'ям ... можливо, іншим шляхом ...
Hastur

@Hastur: Я не впевнений, якщо ви коментуєте питання чи заяву. Якщо заява, pls опублікуйте як відповідь.
kevinarpe

Відповіді:


7

hash- це вбудована команда bash. Хеш-таблиця є особливістю bash, яка не дозволяє їй шукати $ PATH кожен раз, коли ви вводите команду, кешуючи результати в пам'яті.

Тому, коли кешована / збережена інформація більше не оновлюється або є дійсною, можливо, вам доведеться її скинути.

Детальніше про цю приємну відповідь читайте на Unix stackexchange .


4

Якщо ви раніше запускали програму в цьому виклику оболонки, а потім встановлюєте іншу її версію в більш ранньому каталозі списку $PATHпошуку, вам потрібно скинути хеш, щоб він знайшов його в новому місці. В іншому випадку він буде використовувати кеш для пошуку програми у старому місці.

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

Зауважте, що фактично не потрібно скидати весь хеш, ви можете використовувати:

hash name

змусити його оновити запис кешу лише для цього імені або:

hash -d name

видалити саме цей запис кеша. Усі інші записи кешу залишаються в спокої.

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


Хороший момент про частину встановлення та точку вашого шляху.
kevinarpe
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.