Как я могу установить переменные окружения для программы, выполняемой с помощью `nohup`?

10

(Я редактирую существующий скрипт Bash, поэтому я, вероятно, делаю глупую ошибку здесь ...)

У меня есть сценарий оболочки, который сохраняет команду с переменной окружения в качестве аргумента следующим образом:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Затем он выполняет команду nohupпримерно следующим образом:

nohup $COMMAND > logfile

Это работает.

Теперь я хочу установить переменную окружения, к которой можно получить доступ в Maven. Я пробовал несколько вещей, таких как следующее:

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

... но тогда это просто заканчивается:

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

Я чувствую, что здесь работает несколько не связанных между собой концепций, ни одно из которых я не понимаю или даже не знаю. Что мне нужно, чтобы быть в состоянии сделать выше?

Винсент
источник

Ответы:

19

Три метода:

  • установить (и экспортировать) переменную перед запуском mvn

  • установите переменную при запуске nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • используйте env для установки переменной

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"
AProgrammer
источник
Отлично! Я знал, что это должно быть проще, чем указания, о которых я думал ...
Винсент
Почему я так и не понял, что это так же просто, как экспортировать ТО, затем запустить команду ??? Спасибо!
Христианство