Tengo un flujo de trabajo de Automator y una de las acciones es clonar un repositorio. Aquí está el código para la acción 'Ejecutar script de Shell'. El comando se ejecuta dentro del shell Bash /bin/bash
si eso es importante:
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 .
Ahora la aplicación Automator funciona bien en mi máquina. La ruta a git en mi máquina (A Macbook Pro) es: /usr/bin/git
(Creo que instalé git en mi máquina a través de Xcode)
Pero en la máquina de mi compañero de trabajo (también una Mac Pro) la aplicación Automator falla. De hecho, la salida del archivo log.txt dice:bash: git: command not found
Ahora, en la máquina de mi compañero de trabajo, la ruta a git es: usr/local/git/bin
que sí es diferente porque instaló git a través del instalador de Google Git para Mac OS X, pero no pensé que debería importar porque en el script el comando git no es una ruta absoluta al comando y, además, mi compañero de trabajo puede ejecutar git normalmente desde un script Bash pero cuando se invoca directamente desde la Terminal.
Entonces, ¿qué da? ¿Por qué el flujo de trabajo del automatizador funciona para mí pero no para mi compañero de trabajo?
Debe haber algo fundamental sobre Bash o Unix que no entiendo aquí pero estoy perdido.
Para obtener una solución más general al entorno bash en el automatizador diferente al suyo, simplemente puede cargar su perfil de bash personal en la primera línea del script de automatización del bash:
Esto hará que la ruta y cualquier otra variable de entorno que esté acostumbrado a usar esté disponible desde su script de automatización.
fuente
Resolví el mismo problema de los mismos flujos de trabajo de "servicio" que se ejecutan en máquinas configuradas de manera diferente verificando qué sucede cuando el terminal inicia el shell y eventualmente agregué el siguiente fragmento a la parte superior de todas mis acciones de "Ejecutar script de Shell":
Esto cubre todos los casos que he encontrado hasta ahora.
fuente
Si desea que el flujo de trabajo funcione en ambas máquinas que tienen git en diferentes ubicaciones, agregue cada ubicación a la variable PATH que mencionó patrix, separada por a
:
, como se explica aquí: https://developer.apple.com/library/mac /documentation/AppleApplications/Conceptual/AutomatorConcepts/Articles/ShellScriptActions.htmlEntonces, en la parte superior de su secuencia de comandos de Workflow Shell, agregaría:
PATH=/usr/bin:/usr/local/bin export PATH
fuente