환경 변수 - whdlgp/system_programming_pra GitHub Wiki

환경변수란

리눅스를 쓰는데, 필자는 특히 'cd'명령어와 'ls' 명령어를 사랑한다~~(없으면 CLI 못씀;)~~.
그런데 이 명령어 cd 와 ls 같은 것들은 실제로 프로그램이다. 이상한것은 따로 프로그램의 위치로 이동하지도 않았는데 터미널에 cd 라고 치면 실행이 된다. 왜냐하면 프로그램이 있는 경로가 환경변수에 있기 때문이다.

예를들어 PATH 라는 환경변수에는 /usr/bin 과 같은 디랙토리 들이 등록되있고, 별다른 생각없이 cd를 치면 환경변수에 등록된 디렉토리를 뒤적뒤적 한다. 그리고 그 디렉토리에 cd 라는 프로그램이 있으면 이를 실행하는 것이다.

환경변수에 등록을 하기 위해서는 export 명령어를 이용해 등록하는 방법이 있지만, 이 방법은 쉘이 종료됨과 동시에 등록된 환경변수도 사라진다. 쉘을 실행시킬때마다 계속 쓰고싶다면 .bashrc(zsh 유저라면 .zshrc) 파일에 직접 환경변수를 작성해 줘야 한다.

환경변수 확인하기

getenv(환경변수이름)

환경변수가 없으면 NULL값, 있으면 해당 환경변수의 내용을 반환한다.

예로 환경변수 APPLE에 "/babo/computer" 라는 값이 등록되있으면

char* str;
str = getenv("APPLE");

로 str에 "/babo/computer" 라는 문자열이 반환된것을 볼 수 있을 것이다.

환경변수 등록하기

putenv("환경변수 이름=등록할 것")

성공시 0 값을 반환하고, 실패하면 -1값을 반환한다.

APPLE에 "/babo/computer" 라는 값을 등록하고 싶다면 다음과 같이 하면 된다.

putenv("APPLE=/babo/computer");

환경변수 삭제하기

unsetenv(환경변수이름)

APPLE 이라는 환경변수를 삭제하고 싶다면

unsetenv("APPLE");

해주면 끝이다.

이런 방법으로 등록된 환경변수는 쉘이 종료되면 사라진다. 계속 환경변수를 사용하고 싶다면 앞서 언급했던것과 마찬가지로 .bashrc(또는 .zshrc)에 직접 작성해줘야 한다.