환경 변수 설정 및 주소 구하기
환경 변수 설정 및 해제
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.