리눅스 환경 변수
IT위키
더 많은 작업
- 셸과 그 셸에서 실행되는 프로그램이 공유하는 설정값. 이름과 값의 쌍으로 관리된다.
| 구분 | 범위 | 만드는 법 | 확인 |
|---|---|---|---|
| 셸 변수 | 현재 셸 안에서만 유효. 자식 프로세스에 전달되지 않는다 | 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→/etc/profile.d/*.sh→/etc/bashrc - 사용자별 :
~/.bash_profile→~/.bashrc→ 리눅스 bash profile, 리눅스 bashrc - 로그아웃 시
~/.bash_logout→ 리눅스 bash logout
모든 사용자에게 적용할 변수는 /etc/profile 에, 개인 설정은 ~/.bash_profile 에 둔다.
파일을 고친 뒤 즉시 반영하려면 source ~/.bashrc 또는 . ~/.bashrc 를 실행한다.