Bash

如何為使用 nohup 執行的程序設置環境變數?

  • September 7, 2016

(我正在編輯一個現有的 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

我覺得這裡有幾個不相關的概念在起作用,我都不了解甚至不知道。我需要什麼才能做到以上幾點?

三種方法:

  • 在啟動 mvn 之前設置(並導出)變數
  • 在 nohup 啟動時設置變數:
FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • 使用 env 設置變數
COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"

引用自:https://unix.stackexchange.com/questions/308370