Я тестировал минимальную установку Fedora. Чтобы проверить путь для интерпретаторов, таких как python или node, я обычно использую which
.
Я заметил, which
что не установлен по умолчанию. Я мог бы добавить пакет, но мне интересно, есть ли встроенная оболочка, которую можно использовать для выполнения этой общей задачи.
Я использую Bash 4.2.
which
. Почему бы не использовать «который»? Что использовать тогда?Ответы:
Вы можете использовать
type
, который является встроенным в Bash:См. Документацию,
help [t]ype
которая ссылается наtype
раздел наbash
странице руководства .(
help type
печатает справочные страницы для двух встроенных функций, которые начинаются со строки «type», одна из которых устарела и совершенно не связана с этим.)источник
type -a
себя почему скобки в[t]ype
?type -a
напечатает все, на что указывает аргумент, а не только то, что будет выполнено при его наборе.which
. Почему бы не использовать «который»? Что использовать тогда?type -a
всегда будет то, что он будет выполнять. Я делаю так же, как Гленн, и всегда используюtype -a
тоже.type -p
не показывает путь, если команда является псевдонимом.type -P
всегда показывает путь к команде правильно. я думаю. мы должны обновить обслуживаемый ответ , какtype -P
@ l0b0Вы можете использовать
type
илиcommand -v
. Выводtype
понятен человеку; выводcommand -v
может быть выполнен Bash.Обратите внимание, что они на самом деле немного отличаются.
type
иcommand
найдите хешированное значение команды. То есть, если вы печатаетеcmd
,type cmd
илиcommand -v cmd
скажет вам точно , что будет работать. Они также работают с псевдонимами, функциями Bash и встроенными функциями Bash (хотяtype -p
игнорируют их и возвращают только истинные файлы).which
просто делает поиск по PATH. Это отличается, потому что:which
, но при выполнении этой команды будет использоваться хешированное значение (вы можете принудительно обновить хеш в Bash с помощьюhash -r
).Обычно люди действительно хотят
type
,which
по крайней мере, для интерактивного использования, поскольку они используют его, чтобы выяснить, "откуда эта команда приходит, когда я ее запускаю?" Вы должны использовать толькоwhich
если вы действительно хотите сделать поиск PATH.источник
command -v
является эквивалентомksh
whence
.where
,whence
и, конечно жеwho
,why
иwhen
? Почему нетуwhat
?echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what