MYVAR=something이 printenv에 나타나지 않는 이유는 무엇입니까? 이것은 getenv 기능과 관련이 있습니까?

MYVAR=something이 printenv에 나타나지 않는 이유는 무엇입니까? 이것은 getenv 기능과 관련이 있습니까?

이유를 이해하려고 노력 중이에요stlib.h에서 환경 변수 가져오기PATH내 맞춤 변수 의 경우 (예 ANDROID_PRODUCT_OUT: 이것이 다음과 관련이 있다고 생각합니다.

ANDROID_PRODUCT_OUT=test
printenv | grep ANDR
#nothing

내가 정의한 변수가 왜 나타나지 않습니까 printenv? getenv("ANDROID_PRODUCT_OUT")==NULL바이너리가 실행되는 동일한 쉘에 변수가 정의되어 있음에도 불구하고 이는 왜 관련이 있습니까 ?

답변1

글을 써서

ANDROID_PRODUCT_OUT=test

ANDROID_PRODUCT_OUT현재 쉘에서 쉘 변수만 설정하면 됩니다. 포크된 프로세스(즉, 해당 셸에서 실행되는 모든 명령)에서 사용할 수 있는 환경 변수가 되도록 하려면 변수를 내보내야 합니다.

export ANDROID_PRODUCT_OUT

한 줄에 변수를 설정하고 자동 내보내기로 표시할 수도 있습니다.

export ANDROID_PRODUCT_OUT=test
printenv | grep ANDR # outputs: ANDROID_PRODUCT_OUT=test

모든 분기된 프로그램에 대한 변수를 자동으로 내보내지 않고 ./myprogram실행하려는 특정 프로그램(예: )에서만 사용할 수 있도록 하려면 다음을 수행할 수 있습니다.

ANDROID_PRODUCT_OUT=test ./myprogram

관련 정보