[shell] makefile에서 쉘 환경 변수를 얻는 방법은 무엇입니까?

내가 들어갈 때 쉘에서

echo $demoPath

그것은 인쇄

/usr/local/demo

$demoPath메이크 파일 에서이 변수의 값을 어떻게 얻을 수 있습니까?



답변

환경 변수를 내 보낸 경우 :

export demoPath=/usr/local/demo

makefile( make설정 한 모든 환경 변수를 가져옴) 에서 이름으로 간단히 참조 할 수 있습니다 .

DEMOPATH = ${demoPath}    # Or $(demoPath) if you prefer.

환경 변수를 내 보내지 않은 경우 내보낼 때까지 또는 명령 줄에서 명시 적으로 전달하지 않는 한 액세스 할 수 없습니다.

make DEMOPATH="${demoPath}" 

C 쉘 파생물을 사용하는 setenv demoPath /usr/local/demo경우 export명령을 대체 하십시오 .


답변

행동을 확인하기 위해 공식 문서를 원하는 사람들을 위해

make의 변수는 make가 실행되는 환경에서 올 수 있습니다. make가 시작할 때 보는 모든 환경 변수는 동일한 이름과 값을 가진 make 변수로 변환됩니다. 그러나 makefile의 명시 적 할당 또는 명령 인수가 환경을 재정의합니다. ( ‘-e’플래그가 지정되면 환경의 값이 메이크 파일의 할당을 재정의합니다.

https://www.gnu.org/software/make/manual/html_node/Environment.html


답변

all:
    echo ${PATH}

또는 하나의 명령에 대해서만 PATH를 변경하십시오.

all:
    PATH=/my/path:${PATH} cmd


답변