J'ai un flux de travail Automator et l'une des actions consiste à cloner un référentiel. Voici le code de l'action «Exécuter le script shell». La commande est exécutée dans le shell Bash /bin/bash
si cela importe:
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 .
Maintenant, l'application Automator fonctionne correctement sur ma machine. Le chemin vers git sur ma machine (Un Macbook Pro) est: /usr/bin/git
(Je crois que j'ai installé git sur ma machine via Xcode)
Mais sur la machine de mon collègue (également un Mac Pro), l'application Automator échoue. En fait, la sortie du fichier log.txt indique:bash: git: command not found
Maintenant, sur la machine de mon collègue, le chemin vers git est:, usr/local/git/bin
ce qui, oui, est différent car il a installé git via Google Git Installer pour Mac OS X, mais je ne pensais pas que cela devrait avoir d'importance car dans le script, la commande git n'est pas un chemin absolu vers la commande et de plus mon collègue peut exécuter git normalement à partir d'un script Bash mais lorsqu'il est appelé directement depuis le terminal.
Alors qu'est-ce qui donne? Pourquoi le workflow de l'automatisme fonctionne-t-il pour moi mais pas pour mon collègue?
Il doit y avoir quelque chose de fondamental à propos de Bash ou Unix que je ne comprends pas ici mais je suis perdu.
Pour une solution plus générale à l'environnement bash dans un automate différent du vôtre, vous pouvez simplement charger votre profil bash personnel à la première ligne du script bash de l'automate:
Cela rendra le chemin d'accès et toutes les autres variables d'environnement que vous avez l'habitude d'utiliser disponibles à partir de votre script d'automate.
la source
J'ai résolu le même problème des mêmes workflows de «service» exécutés sur des machines configurées différemment en vérifiant ce qui se passe lorsque le terminal démarre le shell et en ajoutant éventuellement l'extrait de code suivant en haut de toutes mes actions «Run Shell Script»:
Cela couvre tous les cas que j'ai rencontrés jusqu'à présent.
la source
Si vous souhaitez que le workflow fonctionne sur les deux machines qui ont git dans des emplacements différents, ajoutez chaque emplacement à la variable PATH mentionnée par la matrice, séparé par un
:
, comme expliqué ici: https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.htmlDonc, tout en haut de votre script shell de workflow, vous ajouteriez:
PATH=/usr/bin:/usr/local/bin export PATH
la source