我想在運行 makefile 命令時設定環境變數,但理想情況下,變數將存盤在另一個檔案中。
./Makefile
_init_dev:
. ./config/dev-env
diff-dev: _init_dev
cdk diff
deploy-dev: _init_dev
cdk deploy
./config/dev-env
export HELLO_CDK_DEPLOY_ENVIRONMENT=dev
首先,我嘗試使用source加載變數但是這失敗了訊息:
make: source: Command not found
我知道這是因為make運行sh而不是bash.
然后我嘗試.在我的組態檔前面添加以嘗試以這種方式加載變數。
這兩種方法都沒有奏效。當我運行我的cdk命令時,我可以從輸出中看到尚未設定環境變數。
任何人都可以建議如何讓它發揮作用嗎?
uj5u.com熱心網友回復:
makefile 中的每個配方行都在其自己的 shell 中運行。環境變數會修改當前的 shell,但是當 shell 退出時,這些更改就會消失。因此,一個配方完全不可能設定在不同配方中可見的環境變數。
如果您希望這些變數可用,則必須在每個配方行中獲取它們,如下所示:
diff-dev:
. ./config/dev-env && cdk diff
deploy-dev:
. ./config/dev-env && cdk deploy
您可以將其放入變數中,例如:
CDK = . ./config/dev-env && cdk
diff-dev:
$(CDK) diff
deploy-dev:
$(CDK) deploy
或者,如果您的dev-env檔案是一種足夠簡單的格式(例如您顯示的格式),它既可以作為 makefile 也可以作為 shell 腳本,您可以包含它:
include ./config/dev-env
diff-dev:
cdk diff
deploy-dev:
cdk deploy
但這僅適用于非常有限的內容dev-env(基本上簡單地將變數分配給靜態字串)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406092.html
標籤:
下一篇:可以安全地假設sh正在安裝?
