환경변수

개요

모든 OS의 설정이나 터미널 같은 곳을 가면 환경변수라는 것이 있다.

환경변수가 무엇이고 그것에 관련된 명령에 대해 알아보겠다.




쉘 변수


쉘도 하나의 프로그램이다. 그러므로 변수를 가지는데 특정한 쉘의 정보를 담고 변수를 통해 프로그램을 제어한다.

나는 zsh을 사용하므로 그곳에서만 사용하는 변수이며 bash같은 다른 쉘에는 다른 쉘 변수를 사용한다.

다른 말로 사용자 환경변수 혹은 로컬 환경변수라고 말한다. 쉘 변수 역시 환경변수의 일종인 것이다.

나는 다른 용어보다 쉘 변수가 좀 더 직관적이기 때문에 쉘변수라고 사용하겠다.




환경 변수


쉘 변수가 특정한 쉘에서 사용하는 로컬 변수와 같은 의미였다면

환경변수는 모든 쉘에서 사용할 수 있는 글로벌 변수와 같은 의미다.

그러므로 쉘에서 환경변수를 통해 컴퓨터 동작에 영향을 끼칠 수 있는 것이다.

시스템의 현재 정보를 담고있는 변수들이라고 할 수 있다.




set


쉘 변수를 출력하고 쉘 변수의 값을 변경할 수 있다.

옵션들을 이용하여 추가적인 기능을 사용할 수 있다.

그냥 set 명령어만 실행한다면 쉘 변수들의 목록들을 보여준다.

만약 쉘변수를 변경하거나 추가하고 싶다면 zsh기준으로는 set 명령어가 필요없이 변수=값의 형태로 하면된다.




unset


쉘 변수를 제거하고 싶을 때 사용하는 명령어이다.




export


쉘 변수를 환경변수로 만들고 싶을 때 사용하는 명령어이다.




env


환경 변수를 출력하고 쉘 변수의 값을 변경할 수 있다.

옵션들을 이용하여 추가적인 기능을 사용할 수 있다.

그냥 env 명령어만 실행한다면 환경 변수들의 목록들을 보여준다.




프로그램에 환경변수 넘겨주기


int main(). 우리가 프로그램을 짤 때 가장 기본적으로 사용하는 main함수이다.

만약 프로그램에 인자값을 넘겨줄때는 int main(int argc, char **argv)를 사용한다.

main 함수의 파라메터를 하나 더 추가하게 된다면 시스템의 환경변수를 넘겨준다.

int main(int argc, char **argv, char **envv)의 형태로 사용하면 된다.

그렇다면 envv 변수에 시스템의 환경변수들이 저장되어 있다.