2016-05-05 9 views
0

Я читал в некоторых базах FAQ некоторое время назад (что я не помню), что which следует избегать и command -v предпочтительнее.bash: which vs command -v

Почему это так? В чем преимущества, недостатки одного из них?

+0

Что? Зачем? 'which' сообщает вам, где находится исполняемый файл программы, в то время как' command -v' обычно показывает _version_ исполняемого файла – ForceBru

+4

Вот ссылка: [Проверить, существует ли программа из сценария Bash] (http: // stackoverflow. com/questions/592620/check-if-a-program-exists-from-a-bash-script) – anishsane

+2

@anishsane - этот вопрос «лучше», а не «как я ..». Хотя ответ на этот другой вопрос объясняет разницу, сам вопрос отличается. – ghoti

ответ

6

Ну ...

command, вероятно, встраиваются в вашу оболочку, и с -v вариант расскажут вам, как ваша оболочка будет вызывать команду, указанную в качестве опции.

which - внешний двоичный код, расположенный по адресу , который проходит через переменную окружения $PATH и проверяет наличие файла.

Причина выбора первого над последним заключается в том, что он избегает зависимости от того, что находится за пределами вашей оболочки.

Две команды делают разные вещи, и вы должны выбрать тот, который более точно соответствует вашим потребностям. Например, если command встроен в вашу оболочку, command -v command укажет это с его выходом (через несуществование пути), но which command попытается указать на файл на вашем пути, независимо от того, как command будет интерпретироваться вашей оболочки.

 Смежные вопросы

  • Нет связанных вопросов^_^