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?

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"

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.