Post

환경 변수 설정 및 주소 구하기

환경 변수 설정 및 해제


1회성 설정 방법

  • env : 환경 변수 조회 및 해제

  • env NAME=VALUE : NAME 환경 변수에 VALUE 값 지정

  • env -u NAME : NAME 환경 변수 제거


  • set NAME=VALUE : NAME 환경 변수에 VALUE 값 지정, bash 에선 set 생략 가능

  • unset NAME : NAME 환경 변수 해제


  • export NAME=VALUE : NAME 환경 변수 설정

영구 설정 방법은 참고자료에서 확인






환경변수 주소 구하기


1
2
3
4
5
6
7
8
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
   printf("env : %p\n", getenv(argv[1]));
   return 0;
}

위 코드는 프로그램이 실행 중일 때 환경 변수가 어디에 있는지 주소를 출력해주는 프로그램이다.

환경 변수에서 중요한 부분은 환경 변수가 스택에 위치한다는 점과 셸에서 값을 설정할 수 있다는 점이다.

따라서 환경 변수의 주소를 구할 때, 프로그램 이름의 길이가 환경변수 위치에 영향을 준다.

실행되는 프로그램의 이름도 스택 어디간에 위치해 다른 주소를 쉬프트한다.

만약, 프로그램 이름 길이가 한 바이트 늘어나면 환경 변수 주소는 두 바이트 줄어든다.






Reference


https://sites.google.com/site/sunitwarehouse/os/linux/0001
set, env, export, declare 차이점

This post is licensed under CC BY 4.0 by the author.