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="[email protected]:$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.
Aby uzyskać bardziej ogólne rozwiązanie środowiska bash w automatorze różniącym się od twojego, możesz po prostu załadować swój osobisty profil bash w pierwszym wierszu skryptu bash automatyzatora:
Dzięki temu ścieżka i wszelkie inne zmienne środowiskowe, których używasz, są dostępne ze skryptu automatora.
źródło
Rozwiązałem ten sam problem z tymi samymi przepływami pracy „usługi” uruchamianymi na różnie skonfigurowanych komputerach, sprawdzając, co się dzieje, gdy terminal uruchamia powłokę, i ostatecznie dodając następujący fragment kodu na początku wszystkich moich działań „Uruchom skrypt skryptu”:
Dotyczy to wszystkich przypadków, które do tej pory spotkałem.
źródło
Jeśli chcesz, aby Workflow działał na obu komputerach, które mają git w różnych lokalizacjach, dodaj każdą lokalizację do zmiennej PATH, o której wspomniała patrix, oddzielając ją
:
, jak wyjaśniono tutaj: https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.htmlZatem na samym początku skryptu powłoki przepływu pracy dodajesz:
PATH=/usr/bin:/usr/local/bin export PATH
źródło