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