Поиск команды «which» в системе через BASH - PullRequest
1 голос
/ 30 августа 2011

При написании сценариев BASH я обычно использую команду which машины Linux (где Linux Machine относится к ОС Linux на настольных компьютерах, такой как Ubuntu, Fedora, OpenSUSE) для поиска пути или доступности других двоичных файлов.Я понимаю, что which может искать двоичные файлы (команды), которые присутствуют в наборе переменных PATH.

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

Мое намерение состоит в том, чтобы создать сценарий оболочки (BASH), который можно запускать на компьютере, и в случае, если среда не подходит (например, отсутствует какая-либо команда, используемая в сценарии),должен быть в состоянии выйти изящно.

Есть ли какие-либо предложения по этому поводу.Я понимаю, что могут быть способы, такие как locate или find и т. Д., Но опять же, что делать, если даже они недоступны.Другой вариант, который я уже знаю, заключается в том, что я ищу существование двоичного файла which по стандартному пути, например /usr/bin/ или /bin/ или /usr/local/bin/.Есть ли еще какая-то возможность?

Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 30 августа 2011
type which

type - встроенная команда bash, поэтому она всегда доступна в bash.Подробнее см. man bash.

Обратите внимание, что это также распознает псевдонимы:

$ alias la='ls -l -a'
$ type la
la is aliased to 'ls -l -a'
2 голосов
/ 30 августа 2011

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

Если вы беспокоитесь о том, что кто-то мог испортить вашу установку bash и каким-то образом удалить which, то, я полагаю, теоретически, когда вы действительно вызываете команду, вы получите код выхода 127.

Рассмотрим

$ sdgsdg
-bash: sdgsdg: command not found
$ echo $?
127

Коды выхода в bash: http://tldp.org/LDP/abs/html/exitcodes.html

Конечно, если бы кто-то удалил which, я бы тоже не стал доверять кодам выхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...