getenv... 의문점..

익명 사용자의 이미지

setenv, putenv, getenv 등으로 환경변수를 컨트롤 할 수 있죠..

근데, 좀 의문점이 있습니다.

shell#] echo $MAIL
--> /usr/mail/

로 환경변수가 등록되어 있다면야

int main()
{
char* temp = getenv("MAIL");
}

로 간단히 처리를 하겠지만
저는 제가 만든 쉘스크립에 있는 변수를 콜하고 싶거든요..

mysh.sh 라는 파일을 만들고
nation=korea
로 변수를 등록시킨 후에 getenv("nation") 의 식으로 콜을 하고 싶은데,

제 생각으로는 같은 프로세스 상에서 쉘을 실행 시키고 getenv를 호출하면 될듯 한데 말이죠..
즉,
fork -> execl(mysh.sh) -> getenv 의 순서로 말입니다.

그런데 언제나 null 값을 리턴합니다.

행여나 해서 콘솔상에서 ./mysh.sh 를 실행시킨 후에
echo $nation 하니.. 당연히 아무 문자도 나오지 않죠(-_-;)

어떤게 문제인지 감이 잘 안오네요.. 제 생각으로는 fork 후에 생성된 자식 프로세스에서 쉘스크립
과 getenv를 호출하니 될거 같은데요..

혹시 fork로 만들어진 자식이 쉘을 실행하는것 자체가 다른 프로세스를 생성시키는게 아닌가 하는 생
각도 들지만 setenv 같은 경우는 그렇지 않거든요..

조언 부탁 드립니다.

익명 사용자의 이미지

export nation