Раніше я був розчарований різницею в which
команді на різних платформах (Linux проти Solaris vx. OS X), з різними оболонками, можливо, також і в цьому питанні. type
було запропоновано як кращу альтернативу, але наскільки це було б портативно?
Раніше я писав функції, які аналізують вихід which
та обробляють різні випадки використання, в які я зіткнувся. Вони працюють на машинах, які я використовую, і так добре для моїх особистих сценаріїв, але це здається жахливо ненадійним для програмного забезпечення, яке я збираюся розмістити десь для використання іншими.
Якщо взяти лише один можливий приклад, припустимо, я повинен виявити за допомогою скрипту, чи є bash і zsh на машині, а потім запустити команду з zsh, якщо він присутній, і з bash, якщо zsh немає, і bash є достатнім версія не має конкретної помилки. Більшість решти сценарію може бути оболонкою Bourne або Ruby або будь-яким іншим, але це необхідно зробити (AFAIK) або zsh, або останньою версією bash.
Чи можу я розраховувати на type
доступність на різних платформах? Чи є якась інша альтернатива, за допомогою which
якої можна легко і послідовно відповісти на питання, чи встановлена певна частина програмного забезпечення?
(Якщо ви також хочете дати ідеї, спеціально пов’язані з прикладом, який я подав, це чудово, але я в основному просто запитую про загальний випадок: який найнадійніший спосіб дізнатися, чи певна річ встановлена на даній машині ?)
hash
таcommand -v
.