Come posso impostare le variabili d'ambiente per un programma eseguito usando `nohup`?


10

(Sto modificando uno script Bash esistente, quindi probabilmente sto facendo un errore sciocco qui ...)

Ho uno script di shell che salva un comando con una variabile d'ambiente come argomento come questo:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Quindi esegue il comando nohupapprossimativamente come segue:

nohup $COMMAND > logfile

Questo funziona

Ora, voglio impostare una variabile di ambiente a cui è possibile accedere in Maven. Ho provato diverse cose come la seguente:

COMMAND="FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"

... ma poi termina con:

nohup: failed to run command `FORMAVEN=valueForMaven': No such file or directory

Sento che ci sono diversi concetti non correlati al lavoro qui, nessuno dei quali capisco o addirittura conosco. Di cosa ho bisogno per essere in grado di fare quanto sopra?

Risposte:


19

Tre metodi:

  • imposta (ed esporta) la variabile prima di avviare mvn

  • imposta la variabile all'avvio nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • usa env per impostare la variabile

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"

Eccellente! Sapevo che doveva essere più semplice delle indicazioni a cui stavo pensando ...
Vincent,

Come mai non mi sono mai reso conto che era così semplice come esportare POI eseguire il comando ??? Grazie!
cristianoms,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.