Mam przepływ pracy Automatora i jednym z działań jest sklonowanie repozytorium. Oto kod akcji „Uruchom skrypt powłoki”. Polecenie jest uruchamiane w powłoce Bash, /bin/bash
jeśli ma to znaczenie:
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 .
Teraz aplikacja Automator działa poprawnie na moim komputerze. Ścieżka do git na moim komputerze (Macbook Pro) to: /usr/bin/git
( Wydaje mi się, że zainstalowałem git na moim komputerze za pośrednictwem Xcode)
Ale na maszynie mojego współpracownika (także Mac Pro) aplikacja Automator zawodzi. W rzeczywistości dane wyjściowe pliku log.txt mówią:bash: git: command not found
Teraz na komputerze mojego współpracownika ścieżka do git to: usr/local/git/bin
co, tak, jest inne, ponieważ zainstalował git za pomocą Google Git Installer dla Mac OS X, ale nie sądziłem, że powinno to mieć znaczenie, ponieważ w skrypcie polecenie git nie jest absolutną ścieżką do polecenia, a ponadto mój współpracownik może normalnie uruchamiać git ze skryptu Bash, ale wywoływany bezpośrednio z terminala.
Co więc daje? Dlaczego przepływ pracy automatyzatora działa dla mnie, a nie dla mojego współpracownika?
W Bashie lub Uniksie musi być coś fundamentalnego, czego nie rozumiem, ale się zgubiłem.