쉘 변수와 환경 변수
자주 필요한 정보를 저장하여 사용자가 사용하기 편리하게 해주는 것, 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다.
기본적 사용법
$ echo $TERM
xterm-256color
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/jsh/shell
echo 명령어를 통해 환경변수들을 출력해볼 수 있다.
$ printenv
SHELL=/bin/bash
TERM=xterm-256color
USER=root
...
printenv 명령어를 통해 현재 설정되어있는 환경변수들을 출력해볼 수 있다.
$ export TEST='testing'
$ echo $TEST
testing
export 명령어를 통해 환경변수를 설정할 수 있다.
$ unset TEST
$ echo TEST
unset 명령어를 통해 환경변수를 해제할 수 있다.
부모와 자식 관계
환경변수의 값을 바꾸는 쉘 스크립트를 작성해보면 환경변수가 절대 변하지 않는다는 것을 알 수 있다. Unix 시스템은 자식이 절대 부모의 값을 바꿀 수 없다. 반대로 부모는 자신의 값을 바꾸고 자식에게 물려줄 수 있다.
미리 정의된 환경변수들
환경변수 이름 | 뜻 |
---|---|
PATH | 명령어 검색 경로, 보통 쉘 설정 파일들 중 하나에 설정된다. |
EDITOR | 자주 이용하는 편집기 |
PRINTER | 기본 프린터(설정이 되어있으면 lpr에게 알려주지 않아도 됨) |
PWD | 현재 디렉토리의 절대경로명 |
HOME | 사용자 홈 디렉토리 |
SHELL | 로그인 쉘의 절대경로명 |
USER | 사용자 이름 |
TERM | 터미널 종류의 이름 |
TERMCAP | 터미널 종류에 대한 termcap 데이터베이스 항목 로드 |
PATH 환경변수
PATH 환경변수는 콜론(:)으로 구분된 디렉토리들의 목록이다. 쉘은 명령어를 찾을 때 마다 이 디렉토리들을 순서대로 검사한다.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
만약에 특정 경로를 PATH에 추가하고 싶다면 ~/.profile 에 다음과 같은 내용을 추가한다.
$ vi ~/.profile
export PATH=$PATH:/path/to/add
쉘 변수
쉘 변수는 환경 변수의 일반적인 유형, 사용자 또는 사용자의 쉘이 이용하기 위한 정보를 모아두는 곳이다. 환경변수는 전역변수이고 쉘 변수는 지역변수라고 생각할 수 있다. 환경변수와는 다르게 쉘 변수는 소문자로 작성해준다.
쉘 변수를 설정하려면 쉘에 따라 다음과 같이 명령어를 입력해주면 된다.
# C shell
$ set test="testing"
# Bourn shell
$ test="testing"
삭제는 아래와 같이 입력해주면 된다.
# C shell 과 Bourn shell 동일하다.
$ unset test