Вы можете использовать typeили command -v. Вывод typeпонятен человеку; вывод command -vможет быть выполнен Bash.
Обратите внимание, что они на самом деле немного отличаются. typeи commandнайдите хешированное значение команды. То есть, если вы печатаете cmd, type cmdили command -v cmdскажет вам точно , что будет работать. Они также работают с псевдонимами, функциями Bash и встроенными функциями Bash (хотя type -pигнорируют их и возвращают только истинные файлы).
whichпросто делает поиск по PATH. Это отличается, потому что:
- Если существует псевдоним, функция или встроенный модуль с тем же именем, он будет вызван вместо этого.
- Если команда была добавлена ранее в PATH с момента последнего хэширования, она будет найдена
which, но при выполнении этой команды будет использоваться хешированное значение (вы можете принудительно обновить хеш в Bash с помощью hash -r).
Обычно люди действительно хотят type, whichпо крайней мере, для интерактивного использования, поскольку они используют его, чтобы выяснить, "откуда эта команда приходит, когда я ее запускаю?" Вы должны использовать толькоwhich если вы действительно хотите сделать поиск PATH.