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

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

(我正在编辑现有的 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

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

答案1

三种方法:

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

  • 在 nohup 启动时设置变量:

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

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

相关内容