如何为使用`nohup`执行的程序设置环境变量?


10

(我正在编辑现有的Bash脚本,因此我可能在这里犯了一个愚蠢的错误...)

我有一个shell脚本,它以环境变量作为参数保存命令,如下所示:

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

我觉得这里有几个不相关的概念在起作用,我都不了解甚至不知道。我需要什么才能做到以上几点?

Answers:


19

三种方法:

  • 在启动mvn之前设置(并导出)变量

  • 在nohup启动时设置变量:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • 使用env设置变量

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

优秀的!我知道它必须比我想的要容易得多...
Vincent

我怎么还没意识到它像export一样简单,然后运行命令?谢谢!
cristianoms
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.