Назад | Перейти на главную страницу

Получение вывода `какое приложение` в Bash

Вот мой оригинал вопрос на StackOverflow.com

Это сценарий, который я написал

#!/usr/bin/env bash
GP=`/usr/bin/which git`
PWD=`pwd`
echo "PATH IS: ${GP}"
echo "PWD IS: ${PWD}"

и выход

PATH IS: 
PWD IS: /Users/user/tmp

Итак, вопрос в том, как получить which git вывод? Я запускаю его на Mac OS X 10.6.2.

Если git не находится в каталоге, указанном в вашем $PATH переменная, which не сможет найти его.

В PATH зависит от следующих обстоятельств:

  • Оболочка входа
  • Неинтерактивная (логин) оболочка
  • Корневая скорлупа

Обычно указывается в /etc/profile. Также может быть затронуто ~/.bashrc для неинтерактивной оболочки и ~/.bash_profile для оболочки входа.

Использовать type (встроенный Bash) вместо which:

gp=$(type -P git)

Если вы используете type -a в результате будут показаны псевдонимы, функции и более одного исполняемого файла, если существуют альтернативы. При необходимости вы можете проанализировать вывод.

Не устанавливайте PWD - это уже установлено Башом. Фактически, я рекомендую не использовать имена переменных, начинающиеся с заглавных букв, чтобы избежать конфликтов имен с переменными Bash.

# no need to set PWD, it's already set by Bash
echo "PWD IS: ${PWD}"