Я читал в некоторых базах FAQ некоторое время назад (что я не помню), что which
следует избегать и command -v
предпочтительнее.bash: which vs command -v
Почему это так? В чем преимущества, недостатки одного из них?
Я читал в некоторых базах FAQ некоторое время назад (что я не помню), что which
следует избегать и command -v
предпочтительнее.bash: which vs command -v
Почему это так? В чем преимущества, недостатки одного из них?
Ну ...
command
, вероятно, встраиваются в вашу оболочку, и с -v
вариант расскажут вам, как ваша оболочка будет вызывать команду, указанную в качестве опции.
which
- внешний двоичный код, расположенный по адресу , который проходит через переменную окружения $PATH
и проверяет наличие файла.
Причина выбора первого над последним заключается в том, что он избегает зависимости от того, что находится за пределами вашей оболочки.
Две команды делают разные вещи, и вы должны выбрать тот, который более точно соответствует вашим потребностям. Например, если command
встроен в вашу оболочку, command -v command
укажет это с его выходом (через несуществование пути), но which command
попытается указать на файл на вашем пути, независимо от того, как command
будет интерпретироваться вашей оболочки.
Что? Зачем? 'which' сообщает вам, где находится исполняемый файл программы, в то время как' command -v' обычно показывает _version_ исполняемого файла – ForceBru
Вот ссылка: [Проверить, существует ли программа из сценария Bash] (http: // stackoverflow. com/questions/592620/check-if-a-program-exists-from-a-bash-script) – anishsane
@anishsane - этот вопрос «лучше», а не «как я ..». Хотя ответ на этот другой вопрос объясняет разницу, сам вопрос отличается. – ghoti