getenv() 로 환경변수 읽어들일때..

iamcan의 이미지

getenv () 를 테스트 하는 문제인데요, 도대체 알수없이 막히네요..

리눅스에서 bash shell 을 사용중이고 사용자 정의 환경변수를 임의로 추가했습니다

다음은 getenv() 로 환경변수를 읽어들이는 소스입니다.

// 파일명 : env.out
#include.....
..

int main(){
char * env;
env=getenv("myenv");
printf("%s\n",env);
return 0;
}

배쉬 쉘에서 다음과 같이 임의의 환경 변수를 추가하였습니다.
$ myenv="asdf"

그리고 다음과 같이 실행해 봅니다.
$ ./env.out
(null)

왜! 왜 널값이 리턴되는걸까요..

저렇게 환경변수 추가 후에 set 명령으로 환경변수들을 찾아봐도 맨 마지막에 제가 추가한 myenv 가 분명히 나옵니다..

도대체 알수가 없네요. 도와주세요 ㅜㅜ

M.W.Park의 이미지

$ export myenv="asdf"

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

iamcan의 이미지

근데 export 가 정확히 어떤 키워드이구, 그냥 선언할때랑 차이같은건 알수 있을까요..?
알려주시면 대단히 감사하겠습니다^^

puaxx의 이미지

export는 global한것이고

myenv="xxx"

이런것은 local한것 아닐까요?

M.W.Park의 이미지

export는 child process가 access 가능하도록 만들어 주는 것입니다.
역은 성립하지 않습니다. 즉, child에서 export한 것은 parent에서는 access 불가능합니다.

참고: http://tldp.org/LDP/abs/html/
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

iamcan의 이미지

감사합니다!^^