환경변수
환경변수는 쉘 스크립트나 프로그램 실행을 제어, 실행환경 설정하는데 사용된다.
지역 환경 변수
현재 쉘에만 적용되는 변수, 환경변수명 = 변수
전역 환경 변수
현재 쉘과 자식 쉘에 같이 적용되는 변수, exports 환경변수명 = 변수
환경 변수 해제
unset
환경 변수 확인법
echo, set, env
환경 변수 파일 적용
$ source test_sh_var
대표적인 환경변수로 아래와 같다.
HOME : 사용자 홈 디렉토리
PATH : 실행파일 탐색 경로
LANG : 기본 언어
PWD : 사용자 현재 작업 디렉토리
TERM : 터미널 타입
SHELL : 로그인 쉘
BASH : bash 쉘 경로
PS1, PS2 : shell prompt 변수
대표적인 환경 변수
환경변수 | 설명 |
---|---|
PATH | 홈, 경로 |
$PS1 | command prompt |
$PS2 | 추가적인 입력을 받을 때 사용하는 prompt |
$IFS | input field seperator. |
$# | 쉘 스크립트에 전달되는 파라미터 수 |
$0 | 쉘 스크립트 이름 |
2, $3 | 첫번째, 두번째, 세번째 파라미터 |
$$ | 쉘 스크립트의 Process Id |
$* | 스크립트의 모든 파라미터를 1개 변수로 표현 |
$@ | IFS를 사용하지 않고 $*로 출력한 것 |
$ IFS=''$ set foo bar bam$ echo "$@"foo bar bam$ echo "$*"foobarbam$ unset IFS$ echo "$*"foo bar bam
IFS를 활용한 예제이다.
getenv(), putenv(), environ 변수
#include <stdlib.h>char * getenv(const char * name);int putenv(const char * string);#include <stdlib.h>extern char ** environ;
getenv는 환경변수에 설정된 값을 반환한다.
putenv는 "변수명=변수값" 형태의 문자열을 받아 생성한다.
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, int * argv[]) {exit(1);value = getenv(argv[1]);value = argv[2];string = malloc(strlen(var) + strlen(value) + 2);strcat(string, "=");strcat(string, value);if(putenv(string) != 0) {value = getenv(var);if(value) printf("New value of %s is %s\n", var, value);}
putenv를 활용하기 위해 배열에 "변수명=변수값" 형식으로 저장함을 확인할 수 있다.
#include <stdio.h>#include <stdlib.h>int main() {FILE * fp;strcpy(filename, homedir);strcat(filename, "/test.log");exit(1);fclose(fp);}
위 예제는 getenv를 통해 HOME 환경변수에 대한 정보를 얻어 경로 조작 후 파일을 생성하는 예제이다.
#include <stdlib.h>#include <stdio.h>extern char ** environ;int main() {env++;}
environ 변수를 사용해 환경변수와 그 설정값들을 ""변수=값" 형태의 문자열로 저장된 문자열 배열을 가져온다. extern을 사용해 외부 파일에서 참조가 가능하게 해줘야 한다. 실행 결과는 env 명령어를 준 결과와 동일하게 나타난다.
'Operator System > Linux' 카테고리의 다른 글
쉘 프로그래밍 간단한 문법 (0) | 2017.10.26 |
---|---|
프로세스와 생성방법 (0) | 2017.10.26 |
Make (0) | 2017.10.26 |
파일 (0) | 2017.10.26 |
Compile과 라이브러리 (0) | 2017.10.26 |