Linux环境下如何在Makefile规则中正确设置环境变量?
解决Makefile环境变量不生效的问题
你的Makefile写法存在核心问题:Makefile里每一行命令都会启动独立的Shell进程,前几行设置的环境变量只在各自的进程内有效,执行Python脚本的进程根本读不到这些变量。
给你几个可行的修正方案:
方案1:直接在命令前赋值环境变量(最简洁)
把环境变量直接写在Python命令前,变量会仅对这条命令生效,无需export:
entrypoint-job-prod: AWS_PROFILE_NAME=amx-prod ENV=PROD python ./entry_point/entry_point.py
如果要换行提升可读性,用反斜杠连接:
entrypoint-job-prod: AWS_PROFILE_NAME=amx-prod \ ENV=PROD \ python ./entry_point/entry_point.py
方案2:让所有命令共享同一个Shell进程
用分号分隔命令,或用括号包裹,确保所有命令在同一个Shell里执行,环境变量就能正常传递:
entrypoint-job-prod: export AWS_PROFILE_NAME=amx-prod; export ENV=PROD; python ./entry_point/entry_point.py
换行写法:
entrypoint-job-prod: export AWS_PROFILE_NAME=amx-prod; \ export ENV=PROD; \ python ./entry_point/entry_point.py
内容的提问来源于stack exchange,提问作者Luv
相关产品推荐
相关产品推荐

