¿Cómo puedo establecer variables de entorno para un programa ejecutado usando `nohup`?

10

(Estoy editando un script Bash existente, así que probablemente estoy cometiendo un error tonto aquí ...)

Tengo un script de shell que guarda un comando con una variable de entorno como su argumento como este:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Luego ejecuta el comando con nohupaproximadamente lo siguiente:

nohup $COMMAND > logfile

Esto funciona.

Ahora, quiero establecer una variable de entorno a la que se pueda acceder en Maven. He intentado varias cosas como las siguientes:

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

... pero luego termina con:

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

Siento que hay varios conceptos no relacionados en el trabajo aquí, ninguno de los cuales entiendo o incluso sé. ¿Qué necesito para poder hacer lo anterior?

Vincent
fuente

Respuestas:

19

Tres métodos:

  • establecer (y exportar) la variable antes de iniciar mvn

  • establece la variable en el lanzamiento de nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • use env para establecer la variable

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"
Un programador
fuente
¡Excelente! Sabía que tenía que ser más fácil que las instrucciones en las que estaba pensando ...
Vincent
¿Cómo es que nunca me di cuenta de que era tan simple como exportar ENTONCES ejecutar el comando? ¡Gracias!
cristianoms