2011-10-18 4 views
0

makefile에서 setenv 변수를 사용하려고하지만 make 파일을 실행할 때 setenv : command를 찾을 수 없습니다.makefile에서 setenv 사용

어떻게 사용할 수 있습니까?

실제로 여러 환경 변수를 설정하는 쉘 스크립트를 실행하고 싶습니다.

목록이 매우 거대하므로 스크립트를 사용하는 것 외에는 옵션이 없습니다. 수동으로 설정할 수 없습니다. abcd : =/xx/yy/zz

제안 해주십시오.

P. 동일한 명령 setenv xxx yyy는 쉘에서 매우 잘 작동합니다. 이 명령이있는 스크립트로 직접 makefile에서 makefile을 사용하면 실패합니다. '

답변

3

왜 내보내기 명령을 사용하지 않습니까?

+0

실제로 필자는 필자가 이전에 쉘에서 실행했던 스크립트를 작성하여 파일을 만들려합니다. 내가이 명령을 사용하고 수동으로 모든 것을 수출하여 많은 시간을 죽일 곳이 많이 있습니다. – coolcracker

+0

"수동으로 변환 하시겠습니까?"그 (것)들을 전부 대체하기 위하여 왜 perl 1 선을 사용하지 않습니까? – siukurnin

2

쉘이 별도의 프로세스를 실행으로 작동하지 않습니다 환경 변수를 설정하는 스크립트를 실행에 . 쉘 스크립트 source이 필요합니다. 쉘을 기준으로 source 또는 .을 사용할 수 있습니다. 다음은 참조 용 샘플입니다. 여기서 setvar.sh는 변수 &을 설정합니다. print.sh는이를 인쇄합니다. 메이크 (mkfile) setvar.sh에 .

$ cat setvar.sh 

export TEST=ABC 

$ cat print.sh 

echo $TEST 
$ cat mkfile 
test: 
    . ./setvar.sh && ./print.sh 

.SILENT:test 
$ make -f mkfile 
ABC 

또한 include 내가 예를 들어 생각,

$ cat mkfile2 
include setvar.sh 
test: 
    ./print.sh 

.SILENT:test 
$ make -f mkfile2 
ABC 

희망이 도움이 있습니다 사용하여 공급하고 있습니다!

0

나는 setenv가 sh 쉘에 내장되어 있지 않다고 생각한다. GNU Make를 사용한다면 기본 쉘이 사용됩니다. 상황에 따라 bash와 같은 다른 쉘을 사용하고 싶을 것입니다. 당신은 당신이 좋아 원하는에 메이크의 SHELL 변수를 설정하여이 작업을 수행 :

SHELL := /usr/bin/bash 

는 GNU의 자세한 내용은 체크 아웃 this 섹션에 대해 매뉴얼을 확인합니다. SHELL 변수의 다른 동작에 대해 자세히 설명하고, SHELL 변수가 어떻게 동작하는지 또는 쉘에서 상속되지 않았는지를 확인합니다. make는 다른 플랫폼에서 호출됩니다.

편집 : 다른 포스터와 관련하여 환경 변수를 설정하지 않을 것임을 동의합니다. setenv 명령을 사용해야 할 때와 사용하지 않을 것이라고 생각합니다. 나는 당신의 원래 질문에 단지 응답하고 있습니다. GNU make 매뉴얼에있는 파일 만들기에서 변수에 대해 알아 보려면 these other sections을 확인하십시오.

+0

정보 주셔서 감사합니다. – coolcracker

-1
export MY_VAR := "/package/your_path"