행복아울렛

유닉스/리눅스의 환경변수 본문

Programming

유닉스/리눅스의 환경변수

붕탱구 2009. 2. 19. 16:28
환경변수(Environment variable)은 쉘에서 참조하는 변수입니다. 쉘에서 참조하는 변수는 크게 그냥 변수(Variable)과 환경변수로 나누어 지는데, 환경변수와 변수의 가장 큰 차이점은 자식쉘을 생성할 시에 환경변수는 상속이 되는 반면 그냥 변수는 없어져 버립니다. 프로그래밍 변수의 전역변수와 지역변수의 차이라고 생각하시면 됩니다.
쉘 프로그래밍으로 아래와 같이 환경변수를 등록 시켰음에도 불구하고 아래의 예에서 처럼 환경변수로 생성이 되지 않는 이유는 쉘스크립트는 실행시에 현재쉘이 자식쉘로 등록이 되기 때문에 자식쉘에서 환경변수를 등록한다고 하더라도 부모의 환경변수에 접근할 수 없기 때문입니다.

 $ cat a.sh
   #/bin/bash
   export VAR="abcd"
   echo $VAR
 $ ./a.sh
 abcd
 $ echo $VAR

 $

그래서 쉘스크립트에서 실행되는 환경변수를 현재쉘에 등록하고자 하는 경우에는 source명령이나 "."같은 명령으로 등록할 수 있습니다. 여기서 "."의 의미는 다음의 쉘은 자식쉘을 생성하지 말고 현재 쉘에서 수행할 것과 같은 의미라고 볼 수 있습니다.

 $ cat a.sh
   #/bin/bash
   export VAR="abcd"
   echo $VAR
 $ source a.sh
 abcd
 $ echo $VAR
 abcd
 $ export VAR=
 $ echo $VAR

 $ . a.sh
 abcd
 $ echo $VAR
 abcd

Comments