makefile의 파일에서 환경 변수 내보내기

makefile의 파일에서 환경 변수 내보내기

.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. ./.envset +a은 별도의 셸에서 실행됩니다. 효과는 . ./.env명령이 실행되는 셸에서만 표시됩니다.

답변2

현대적인 make구현에는 환경 관리에 대한 지원이 포함됩니다.

GNU make는 내 smakedos와 내 향상된 버전( SunPro Maketarball에서)을 모두 schilytools지원합니다.

env다른 줄에 할당과 명령문을 포함하도록 파일을 주의 깊게 작성한 경우 export해당 include파일 envMakefile.

예를 들면 다음과 같습니다.

include $(HOME)/.env

당신의 Makefile.

관련 정보