У меня есть рабочий процесс Automator, и одно из действий заключается в клонировании хранилища. Вот код для действия «Выполнить сценарий оболочки». Команда запускается в оболочке Bash, /bin/bash
если это имеет значение:
SOURCEDIR="${3/\/Volumes/}"
cd "$2"
REPOURL="bob@somedomain.com:$SOURCEDIR"
WORKINGDIR="$1"
# Capture any errors with cloning process in log file
git clone "$REPOURL" "$WORKINGDIR" &> ./log.txt
// For debugging
echo "exit code: $?"
echo "PPID: $PPID"
open .
Теперь приложение Automator отлично работает на моей машине. Путь к git на моей машине (Macbook Pro): /usr/bin/git
(Я полагаю, я установил git на свою машину через XCode)
Но на машине моего коллеги (также Mac Pro) приложение Automator не работает. Фактически, вывод файла log.txt говорит:bash: git: command not found
Теперь на компьютере моего коллеги путь к git следующий: usr/local/git/bin
да, он другой, потому что он установил git через Google Git Installer для Mac OS X, но я не думаю, что это должно иметь значение, потому что в скрипте команда git это не абсолютный путь к команде, и, кроме того, мой коллега может нормально запускать git из скрипта Bash, но при прямом вызове из терминала.
Так что же дает? Почему рабочий процесс автоматизатора работает для меня, а не для моего коллеги?
В Bash или Unix должно быть что-то фундаментальное, чего я здесь не понимаю, но потерян.
Для более общего решения среды Bash в Automator, отличной от вашей, вы можете просто загрузить свой личный профиль Bash в первой строке сценария Bash для Automator:
Это сделает путь и любые другие переменные среды, к которым вы привыкли, доступными из вашего скрипта automator.
источник
Я решил ту же проблему с теми же «рабочими» рабочими процессами, которые выполняются на компьютерах с различной конфигурацией, проверив, что происходит, когда терминал запускает оболочку, и в конечном итоге добавив следующий фрагмент в начало всех моих действий «Выполнить сценарий оболочки»:
Это охватывает все случаи, с которыми я столкнулся до сих пор.
источник
Если вы хотите, чтобы рабочий процесс работал на обеих машинах, на которых git находится в разных местах, добавьте каждое местоположение в переменную PATH, о которой упоминается патрика, через точку
:
, как описано здесь: https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.htmlИтак, в самом верху вашего скрипта Workflow Shell вы бы добавили:
PATH=/usr/bin:/usr/local/bin export PATH
источник