tgoop.com/srv_admin/1264
Last Update:
Недавно рассказывал про то, как команды выполняются в оболочке Linux. А так же про утилиту type, которая позволяет точно узнать, какая программа будет выполнена при вводе команды в консоли. В продолжении этой темы расскажу про утилиту hash, которая дополняет всю эту историю с командами.
Для начала узнаем, что это вообще такое:# type -a hash
hash is a shell builtin
Hash встроена в оболочку bash. С ее помощью можно посмотреть кэш путей к исполняемым файлам, который хранится до перезапуска оболочки. Возможно где-то в инструкциях в интернете по настройке чего-либо вы видели запуск этой команды для очистки кэша путей. Иногда это нужно сделать при установке нового софта, когда изменился по какой-то причине путь к исполняемому файлу, который вы ранее уже запускали в консоли в текущем сеансе.
Покажу на практике, как и на что влияет hash.# htop
# hash
hits command
1 /usr/bin/htop
# mv /usr/bin/htop /usr/local/bin
# htop
-bash: /usr/bin/htop: No such file or directory
# hash -r
# htop
# hash
hits command
1 /usr/local/bin/htop
Я запустил htop, он уехал в кэш с путём /usr/bin/htop. Потом я его перенёс в /usr/local/bin/htop и не смог запустить через консоль, пока не очистил кэш команды. На практике заниматься подобным обычно не приходится, но у меня были иногда ситуации, когда этот кэш нужно было почистить. Так что лучше про него знать.
Впервые с hash я познакомился еще во freebsd. Там часто в руководствах после установки чего-то из портов предлагалось очистить hash оболочки командой:# rehash
В bash на linux аналог этой команды:# hash -r
Вы можете отключить или снова включить использование кэша исполняемых команд:# set +h
# hash
-bash: hash: hashing disabled
# set -h
#bash #terminal
BY ServerAdmin.ru

Share with your friend now:
tgoop.com/srv_admin/1264