Como posso definir variáveis ​​de ambiente para um programa executado usando `nohup`?

10

(Estou editando um script Bash existente, provavelmente estou cometendo um erro bobo aqui ...)

Eu tenho um script de shell que salva um comando com uma variável de ambiente como seu argumento como este:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Em seguida, ele executa o comando nohupaproximadamente da seguinte maneira:

nohup $COMMAND > logfile

Isso funciona.

Agora, quero definir uma variável de ambiente que possa ser acessada no Maven. Eu tentei várias coisas como as seguintes:

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

... mas depois termina com:

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

Sinto que existem vários conceitos não relacionados em ação aqui, nenhum dos quais eu compreendo ou mesmo conheço. O que eu preciso para poder fazer o acima?

Vincent
fonte

Respostas:

19

Três métodos:

  • defina (e exporte) a variável antes de iniciar o mvn

  • defina a variável no lançamento do nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • use env para definir a variável

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"
AProgrammer
fonte
Excelente! Eu sabia que tinha que ser mais fácil do que as direções que eu estava pensando ...
Vincent
Como é que eu nunca percebi que era tão simples como exportar ENTÃO execute o comando ??? Obrigado!
cristianoms