환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임으로 쉘에서 정의되고 실행하는 동안 프로그램에 필요한 변수를 나타냄.
리눅스 상에서 환경 변수를 이해하려면 동작 범위에 따른 환경 변수와 환경 변수 구성 파일 그리고 환경 변수 명령어에 대해서 알아봄.
리눅스 상에서 자바라든지 이클립스 같은 특정 프로그램에 대한 환경 변수를 설정할 때 어떤 관점에서 설정해야 할지 명확히 알 필요가 있음.
그래서 리눅스 환경 변수에 대해서 알아보자!!!
( 1 ) 동작 범위에 따른 환경 변수
크게 세 가지 관점으로 나눌 수 있음.
1. 로컬 환경 변수
현재 세션에서만 동작하는 환경 변수임.
2. 사용자 환경 변수
특정 사용자에 대해서만 정의된 환경 변수로 로컬 터미널 세션 또는 원격 로그인 세션을 사용하여 로그인할 때마다 로드됨.
관련 파일은 특정 사용자의 홈 디렉토리에 존재하는 파일로 .bashrc, .bash_profile, bash_login, .profile 임.
3. 시스템 전체 환경 변수
해당 시스템에 존재하는 모든 사용자가 사용할 수 있는 환경 변수로 시스템 전원이 켜져 있고 모든 사용자가 로컬 또는 원격으로 로그인할 때마다 로드됨.
관련 파일은 아래와 같음.
/etc/environment
/etc/profile
/etc/profile.d/
/etc/bash.bashrc
( 2 ) 환경 변수 구성 파일
.bashrc
특정 사용자가 새로운 로컬 세션을 생성할 때마다 로드되는 파일로 별칭(alias)과 bash 가 실행될 때 실행되는 함수 등으로 구성됨.
이 파일은 전역적인 설정 파일인 /etc/bashrc 이 수행된 다음 바로 수행됨.
모든 사용자에게 영향을 주는 /etc/bashrc 와는 달리 ~/.bashrc 는 오직 bash 를 실행하는 그 사용자에게만 영향을 줌.
.bash_profile
특정 사용자의 원격 로그인 파일로 이 파일에 있는 환경 변수는 사용자가 원격 로그인 세션이 이루어질 시에 호출됨.
이 파일이 존재하지 않으면 시스템은 .bash_login 이나 .profile 파일을 검색함.
이 파일은 전역적인 설정 파일인 /etc/profile 이 수행된다음 바로 수행됨.
모든 사용자에게 영향을 주는 /etc/profile 과는 달리 ~/.bash_profile 는 오직 bash 를 실행하는 그 사용자에게만 영향을 줌.
/etc/environment
전반적인 시스템을 제어하는 파일로 필요한 환경 변수를 작성하거나 편집 또는 제거함.
이 파일에서 만든 환경 변수는 로컬 및 원격으로 접속한 모든 사용자가 액세스할 수 있음.
/etc/bash.bashrc
시스템 전체의 bashrc 파일로 모든 사용자가 로컬 터미널 세션을 열 때마다 로드됨.
이 파일에서 만든 환경 변수는 모든 사용자가 액세스할 수 있지만 로컬 터미널 세션에서만 가능함.
/etc/profile
시스템 전체의 profile 파일로 모든 사용자가 원격 로그인 세션이 이루어질 시에 호출됨.
이 파일에서 만든 환경 변수는 모든 사용자가 액세스할 수 있지만 원격 로그인 세션에서만 가능함.
파일 내용을 수정 후에 재부팅/재실행 없이 즉시 적용하고자 한다면 아래 명령어와 같이 입력함.
source [파일 이름]
( 3 ) 로컬 환경 변수 설정
2 가지 방법이 있음.
1. 가변적인 변수명을 써서 설정함.
기본 형식 : [가변적인 변수명]=[환경변수값]
2. export 명령어를 이용하여 환경 변수를 설정함.
기본 형식 : export [변수명]=[환경변수값]
여기서 주의! 변수명과 데이터값 사이에 있는 '=' 과 띄워쓰기를 하면 안됨.
띄워쓰기를 하면 '=' 을 데이터로 인식하여 오류가 남.
입력한 환경 변수를 확인할 때는 'echo [$변수명]' 명령을 입력해서 확인함.
로컬 환경 변수를 삭제할 때는 'unset [가변적인 변수명]' 입력하거나 'env -i bash' 명령을 입력함.
참고로 그 후에 exit 명령어를 입력하면 모든 변수명이 복원되어서 다시 사용할 수 있음.
아래는 export 명령어에 대한 추가 정보임.
export
환경변수 리스트를 보여줌
export [변수명]=[$변수명]:[환경변수값]
ex. export PATH=$PATH:/home/koromoon/hack1/bin:/home/koromoon/hack2/bin
변수명에 환경변수값을 추가함
( 4 ) 사용자 환경 변수 설정
.bashrc 이나 .bash_profile 파일 하단에 'export [변수명]=[환경변수값]' 명령줄을 추가한 후 source [파일 이름] 명령어를 입력해서 설정함.
삭제할 때는 역으로 'export [변수명]=[환경변수값]' 명령줄을 삭제한 후 source [파일 이름] 명령어를 입력해서 설정함.
.bashrc (특정 사용자가 새로운 로컬 세션으로 접근 시도시)
.bash_profile (특정 사용자가 원격 로그인 세션으로 접근 시도시)
( 5 ) 시스템 전체 환경 변수
/etc/bash.bashrc 이나 /etc/profile 파일 하단에 'export [변수명]=[환경변수값]' 명령줄을 추가한 후 source [파일 이름] 명령어를 입력해서 설정함.
삭제할 때는 역으로 'export [변수명]=[환경변수값]' 명령줄을 삭제한 후 source [파일 이름] 명령어를 입력해서 설정함.
.bashrc (모든 사용자가 새로운 로컬 세션으로 접근 시도시)
.bash_profile (모든 사용자가 원격 로그인 세션으로 접근 시도시)
( 6 ) 일반적으로 사용되는 환경변수 목록
HOME : 사용자의 홈디렉토리
PATH : 실행파일을 찾는 경로
LANG : 프로그램 사용시 기본 지원되는 언어
PWD : 사용자의 현재 작업하는 디렉토리
TERM : 로긴 터미널 타입
SHELL : 로그인해서 사용하는 쉘
USER : 사용자의 이름
DISPLAY : X 디스플레이 이름
VISUAL : visual 편집기의 이름
EDITOR : 기본 편집기의 이름
COLUMNS : 현재 터미널이나 윈도우 터미널의 컬럼수
PS1 : 명령프롬프트변수
PS2 : 2차 명령프롬프트임. 명령행에서 사용하여 명령행을 연장했을 때 나타냄.
BASH : 사용하는 bash 쉘의 경로
BASH_VERSION : bash의 버전
HISTFILE : history 파일의 경로
HISTFILESIZE : history 파일의 크기
HISTSIZE : history에 저장되는 갯수
HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수
HOSTNAME : 호스트의 이름
LINES : 터미널의 라인 수
LOGNAME : 로그인이름
LS_COLORS : ls 명령의 색상관련 옵션
MAIL : 메일을 보관하는 경로
MAILCHECK : 메일확인시간
OSTYPE : 운영체제 타입
SHLVL : 쉘의 레벨
TERM : 터미널종류
UID : 사용자의 UID
USERNAME : 사용자이름
( 7 ) 환경변수 확인 명령어
set 명령어 : 로컬 환경변수 조회 명령어
env 명령어 : 글로벌 환경변수 조회 명령어
참고 사이트 :
http://www.tecmint.com/set-unset-environment-variables-in-linux/
http://originalchoi.tistory.com/19
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기