¿Mi flujo de trabajo del automatizador falla porque no puede encontrar el comando git dentro del comando 'Ejecutar shell script'? Necesitas ayuda

16

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 shell script'. El comando se ejecuta dentro del shell Bash /bin/bash si eso importa:

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 hacia 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 un 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 , lo cual, sí, es diferente porque instaló git a través del Google Git Installer para Mac OS X, pero no pensé que debiera importar porque en la secuencia de comandos, el comando git no es una ruta de acceso absoluta a la orden y, además, mi compañero de trabajo puede ejecutar git normalmente desde una secuencia de comandos 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 que estoy perdido.

    
pregunta racl101 29.07.2013 - 22:34

4 respuestas

23

Los scripts ejecutados a través de Automator usan la ruta de búsqueda predeterminada que generalmente no incluye /usr/local/bin . En su caso, una solución fácil sería poner

export PATH=/usr/local/bin:$PATH

en algún lugar al principio del script.

    
respondido por el nohillside 30.07.2013 - 00:03
8

Para obtener una solución más general para el entorno de bash en automator diferente de la suya, simplemente puede cargar su perfil personal de bash en la primera línea del script bash de automator:

source ~/.bash_profile

Esto hará que la ruta y cualquier otra variable de entorno que esté acostumbrado a usar esté disponible desde su secuencia de comandos automator.

    
respondido por el Daniel Schlaug 17.01.2015 - 17:19
4

Resolví el mismo problema de los mismos flujos de trabajo de "servicio" que se ejecutan en máquinas configuradas de manera diferente al verificar qué sucede cuando el terminal inicia el shell y finalmente agrega el siguiente fragmento de código al principio de todas mis acciones "Ejecutar shell script":

if [ -x /usr/libexec/path_helper ]; then
    eval '/usr/libexec/path_helper -s'
fi
if  [ -f "$HOME"/.profile ]; then
    source "$HOME"/.profile
elif [ -f "$HOME"/.bash_profile ]; then
    source "$HOME"/.bash_profile
elif [ -f "$HOME"/.bashrc ]; then
    source "$HOME"/.bashrc
fi

Esto cubre todos los casos que he encontrado hasta ahora.

    
respondido por el silverdr 22.06.2015 - 15:32
1

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, separadas por : , como se explica aquí: enlace

Entonces, en la parte superior de su secuencia de comandos de Shell de flujo de trabajo, agregaría:

PATH=/usr/bin:/usr/local/bin export PATH

    
respondido por el monfresh 29.01.2014 - 07:41

Lea otras preguntas en las etiquetas