Impostazione delle variabili di ambiente per gli script eseguiti da launchd?

1

Ho una sceneggiatura che ha funzionato in passato, ma sembra che ora abbia dei problemi (credo sia dovuto a Yosemite). Quello che avevo fatto è stato creare una variabile di ambiente impostata su "false" e quindi il mio script lo avrebbe impostato su "true" in modo che se lo script richiedesse troppo tempo e ricominciasse prima che terminasse, non tenterebbe di eseguirlo di nuovo contemporaneamente. Tuttavia, non funziona più.

Ho impostato inizialmente la variabile con /etc/launchd.conf

setenv autoBackupImagesInProgress false

E la parte del mio script che non funziona più è

#Ensure that this script isn't already running
if [ -z "$autoBackupImagesInProgress" ] ; then
   #Concurrency variable was not setup so this will not work;
   #edit .bashrc or .profile to include export autoBackupImagesInProgress=false
   #should be /etc/launchd.conf
   print "WARNING: Concurrency protection unavailable"
elif [ $autoBackupImagesInProgress = true ] ; then
   #Another process has already started this, but has not yet finished
   print "WARNING: Already in progress; aborting."
   exit 0;
fi

Funziona se avvio lo script dal terminale o da Spotlight, ma non quando viene avviato con launchd. Quando viene eseguito da launchd, questo stampa sempre il primo avviso e non colpisce mai elif.

    
posta tenmiles 10.11.2014 - 00:08
fonte

1 risposta

1

Apri lo Script Editor (Launch Pad - > Other - > Script Editor) Digita script come questo:

do shell script "launchctl setenv autoBackupImagesInProgress false"

Usa più righe se vuoi impostare più variabili.

Salva questo script come applicazione, apri SystemPreferences → Users & Gruppi → il tuo utente → Elementi di login e aggiungi il tuo script salvato.

Per applicare le modifiche, disconnetti il tuo account e accedi di nuovo.

    
risposta data 10.11.2014 - 00:29
fonte

Leggi altre domande sui tag