본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
셸과 그 셸에서 실행되는 프로그램이 공유하는 설정값. 이름과 값의 쌍으로 관리된다.

셸 변수와 환경 변수

편집 원본 편집
구분 범위 만드는 법 확인
셸 변수 현재 셸 안에서만 유효. 자식 프로세스에 전달되지 않는다 NAME=value set
환경 변수 현재 셸과 자식 프로세스까지 전달된다 export NAME=value env, printenv

셸 변수를 export 하면 환경 변수가 된다.

  • bash 가 미리 정해 둔 환경 변수(PATH, HOME, PS1, LANG 등)는 관례상 대문자 이름을 쓴다. 소문자로 된 변수로 이루어진 것이 아니다
  • 변수 이름은 대소문자를 구분한다. path 와 PATH 는 다른 변수다
  • 현재 설정된 환경 변수 전체는 env 나 printenv 로 본다

주요 환경 변수

편집 원본 편집
변수 내용
PATH 명령어를 찾을 디렉터리 목록. 콜론(:)으로 구분한다
HOME 사용자의 홈 디렉터리
USER, LOGNAME 로그인한 사용자 이름
SHELL 로그인 셸의 경로(예: /bin/bash). 서브 셸을 띄워도 바뀌지 않는다. 셸이 몇 겹 중첩됐는지는 SHLVL
HOSTNAME 시스템의 호스트 이름
PWD, OLDPWD 현재 작업 디렉터리, 직전 디렉터리. PWD 는 Print Working Directory 로, 비밀번호(password)와 관계없다
MAIL 사용자에게 도착하는 메일 파일의 경로. 보통 /var/spool/mail/사용자명
MAILCHECK 메일 도착을 확인하는 주기(초)
TERM 터미널 종류(xterm, vt100 등). 화면 제어 방식을 정한다. 접속한 호스트 이름이 아니다
DISPLAY X 클라이언트(그래픽 프로그램)가 화면을 띄울 X 서버를 지정한다. 호스트:디스플레이번호.화면번호 형식으로, 원격 X 서버로 보내려면 export DISPLAY=192.168.0.10:0.0 처럼 바꾼다 → X 윈도, 리눅스 xhost
DESKTOP_SESSION 지금 로그인한 데스크톱 환경 세션의 이름(gnome, plasma 등). 화면을 보낼 곳을 정하지 않는다
WINDOWPATH X 서버가 쓰는 가상 터미널(VT) 번호. 원격 X 서버 지정과 관계없다
LANG, LC_ALL 로캘(언어·문자셋) 설정
PS1, PS2 셸 프롬프트 모양
HISTSIZE 명령의 개수로 정하는 히스토리 크기. 메모리에 기억할 명령 이력의 개수
HISTFILESIZE 히스토리 파일(~/.bash_history)에 저장할 최대 줄 수
HISTFILE 명령 이력을 저장하는 파일의 경로
TMOUT 입력이 없을 때 자동 로그아웃되는 시간(초). 보안 설정으로 /etc/profile 에 넣는다
UID 현재 사용자의 사용자 ID 번호. bash 가 정하는 읽기 전용 변수
  • HISTORYSIZE, HISTCOUNT 같은 변수는 없다. 이력 개수는 HISTSIZE, 파일 크기는 HISTFILESIZE 다
  • 로그아웃시키는 변수는 TMOUT 이다. HOSTNAME·TERM·UID 는 정보를 담을 뿐 로그아웃과 관계없다
$ echo $HOME
/home/ihduser

$ echo $MAIL
/var/spool/mail/ihduser

$ env | grep PATH
$ printenv SHELL

작은따옴표 안에서는 변수가 확장되지 않는다. 큰따옴표 안에서는 확장된다.

$ echo "$SHELL"
/bin/bash
$ echo '$SHELL'
$SHELL
$ echo \$SHELL
$SHELL
$ NAME=value          # 셸 변수
$ export NAME=value   # 환경 변수
$ export PATH=$PATH:/usr/local/bin
$ unset NAME          # 삭제

로그인할 때 읽히는 순서가 정해져 있다.

모든 사용자에게 적용할 변수는 /etc/profile 에, 개인 설정은 ~/.bash_profile 에 둔다. 파일을 고친 뒤 즉시 반영하려면 source ~/.bashrc 또는 . ~/.bashrc 를 실행한다.