Il flusso di lavoro del mio Automator ha esito negativo perché non riesce a trovare il comando git all'interno del comando 'Esegui script shell'? Ho bisogno di aiuto

16

Dispongo di un flusso di lavoro di Automator e una delle azioni consiste nel clonare un repository. Ecco il codice per l'azione "Esegui script shell". Il comando viene eseguito all'interno della shell di Bash /bin/bash se questo è 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 .

Ora l'app di Automator funziona correttamente sul mio computer. Il percorso per git sulla mia macchina (A Macbook Pro) è: /usr/bin/git (credo di aver installato git sulla mia macchina tramite Xcode)

Ma sulla macchina del mio collega (anche un Mac Pro) l'app di Automator fallisce. Infatti, l'output del file log.txt dice: bash: git: command not found

Ora sulla macchina del mio collega il percorso per git è: usr/local/git/bin , che, sì, è diverso perché ha installato git attraverso Google Git Installer per Mac OS X, ma non pensavo che avrebbe dovuto importare perché nello script il comando git non è il percorso assoluto del comando e molto più il mio collega può eseguire git normalmente da uno script Bash ma quando viene richiamato direttamente dal terminale.

Quindi cosa dà? Perché il flusso di lavoro dell'automazione funziona per me, ma non per il mio collega di lavoro?

Ci deve essere qualcosa di fondamentale su Bash o Unix che non sto capendo qui ma sono perso.

    
posta racl101 29.07.2013 - 22:34
fonte

4 risposte

23

Gli script eseguiti tramite Automator utilizzano il percorso di ricerca predefinito che di solito non include /usr/local/bin . Nel tuo caso una soluzione facile sarebbe mettere

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

da qualche parte all'inizio dello script.

    
risposta data 30.07.2013 - 00:03
fonte
8

Per una soluzione più generale per l'ambiente bash in Automator diversa dalla tua puoi semplicemente caricare il tuo profilo personale bash sulla prima riga dello script bash dell'automator:

source ~/.bash_profile

Questo renderà il percorso e tutte le altre variabili d'ambiente che sei abituato a usare disponibile dal tuo script di automazione.

    
risposta data 17.01.2015 - 17:19
fonte
4

Ho risolto lo stesso problema degli stessi flussi di lavoro di "servizio" eseguiti su macchine configurate in modo diverso verificando cosa accade quando il terminale avvia la shell e infine aggiungendo il seguente frammento all'inizio di tutte le mie azioni "Esegui script shell":

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

Questo copre tutti i casi che ho incontrato finora.

    
risposta data 22.06.2015 - 15:32
fonte
1

Se vuoi che il flusso di lavoro funzioni su entrambe le macchine che hanno git in posizioni diverse, aggiungi ciascuna posizione alla variabile PATH menzionata da patrix, separata da una : , come spiegato qui: link

Quindi, nella parte superiore dello script della shell del flusso di lavoro, dovresti aggiungere:

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

    
risposta data 29.01.2014 - 07:41
fonte

Leggi altre domande sui tag