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

5

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

Eu tenho um shell script 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 com nohup da seguinte forma:

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

Eu sinto que há vários conceitos não relacionados em ação aqui, nenhum dos quais eu entendo ou até mesmo conheço. O que eu preciso para poder fazer o que foi dito acima?

    
por Vincent 07.09.2016 / 10:14

1 resposta

11

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"
    
por 07.09.2016 / 10:19