.env 파일에서 모든 변수를 내보내는 make 작업을 작성하려고 합니다. 이는 다음과 같습니다.
A=1
B=2
터미널에 입력하면:
set -a
. ./.env
set +a
그것은 아주 잘 작동합니다.
그러나 Makefile의 동일한 작업은 작동하지 않습니다.
export.env:
set -a
. ./.env
set +a
make export.env # done
printenv | grep A # nothing!
make 작업이 완료된 후에도 유지하려면 이러한 변수가 필요합니다.
답변1
여느 과정과 마찬가지로,make
기존 프로세스의 환경을 수정할 수 없습니다., 시작하는 프로세스에 전달된 환경만 제어할 수 있습니다. 입력 버퍼를 채우지 않으면 원하는 것을 달성할 수 없습니다.
또한 make
각 명령줄은 서로 다른 셸에서 처리되므로 , set -a
및 . ./.env
줄 set +a
은 별도의 셸에서 실행됩니다. 효과는 . ./.env
명령이 실행되는 셸에서만 표시됩니다.
답변2
현대적인 make
구현에는 환경 관리에 대한 지원이 포함됩니다.
GNU make는 내 smake
dos와 내 향상된 버전( SunPro Make
tarball에서)을 모두 schilytools
지원합니다.
env
다른 줄에 할당과 명령문을 포함하도록 파일을 주의 깊게 작성한 경우 export
해당 include
파일 env
을 Makefile
.
예를 들면 다음과 같습니다.
include $(HOME)/.env
당신의 Makefile
.