Назад | Перейти на главную страницу

Есть ли встроенный bash для "which"?

Я тестировал минимальную установку Fedora. Чтобы проверить путь для интерпретаторов, таких как python или node, я обычно использую which.

я заметил which не устанавливается по умолчанию. Я мог бы добавить пакет, но мне интересно, есть ли встроенная оболочка, которую можно использовать для выполнения этой общей задачи.

Я использую bash 4.2.

Ты можешь использовать type, который является встроенным Bash:

$ type -P which
which is /usr/bin/which

Для документации см. help [t]ype, который относится к type раздел в bash справочная страница.

(help type печатает страницы справки для два встроенные команды, которые начинаются со строки "тип", один из которых устарел и совершенно не связан с этим.)

Ты можешь использовать 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.