Comment puis-je définir des variables d'environnement pour un programme exécuté en utilisant `nohup`?

10

(Je modifie un script Bash existant, donc je fais probablement une erreur stupide ici ...)

J'ai un script shell qui enregistre une commande avec une variable d'environnement comme argument comme ceci:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Il exécute ensuite la commande avec à nohuppeu près comme suit:

nohup $COMMAND > logfile

Cela marche.

Maintenant, je veux définir une variable d'environnement accessible dans Maven. J'ai essayé plusieurs choses comme les suivantes:

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

... mais cela se termine simplement par:

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

J'ai l'impression qu'il y a plusieurs concepts non liés à l'œuvre ici, dont aucun que je comprends ou même ne connais. De quoi ai-je besoin pour pouvoir faire ce qui précède?

Vincent
la source

Réponses:

19

Trois méthodes:

  • définir (et exporter) la variable avant de lancer mvn

  • définissez la variable au lancement de nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • utilisez env pour définir la variable

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"
AProgrammer
la source
Excellent! Je savais que ça devait être plus facile que les directions auxquelles je pensais ...
Vincent
Comment se fait-il que je n'ai jamais réalisé que c'était aussi simple que d'exporter PUIS exécuter la commande ??? Merci!
cristianoms