학습자료(~2017)/리눅스

[리눅스] 환경변수 등록법

단세포소년 2012. 8. 28. 19:50
반응형


환경변수 등록법 , 해제법 , 확인법 , 환경변수 파일 즉시 적용법

지역 환경변수
환경변수명=변수 예) TEST=test
* 환경변수명과 '=' 에 스페이스가 들어가면 안된다.

전역 환경변수
export 환경변수명=변수 예) export TEST=test

환경변수 해제
unset 환경변수명 예) unset TEST

환경변수 확인법
1. 지역 환경변수는 set 명령
2. 전역 환경변수는 env 명령
3. echo $환경변수명 예) echo $TEST
#환경변수가 가진 값은 '$' 이용하여 사용할 수 있다.

환경변수 적용법
source 환경파일명 예) source /etc/profile
#환경변수를 파일에 적용해도 시스템이 재부팅되거나 쉘이 재실행 되지 않으면 파일에 적용시킨 환경변수를 사용할 수 없다. 이때는 source 명령어를 이용하여 재부팅/재실행 없이 즉시 적용할 수 있다.

export PATH=$PATH:/usr/test

이런식으로 export 가 들어간다면 해당 쉘이 종료되기 전까지 혹은 해당 쉘의 자식 프로세스(쉘)에서는 환경변수를 사용가능하다.

예)

[root@localhost test]# export TEST=test_evn

[root@localhost test]# export TEST=test_env

[root@localhost test]# echo $TEST

test_env

[root@localhost test]# /bin/bash

[root@localhost test]# echo $TEST

test_env


export 가 없이 PATH=$PATH:/usr/test 이런식으로 환경변수를 등록했다면 해당 쉘이 종료되기 전까지 사용가능하다. 해당 쉘의 자식 프로세스(쉘)에서는 해당 환경변수를 사용할 수 없다.
예)
[root@localhost test]# TEST=test
[root@localhost test]# echo $TEST
test
[root@localhost test]# sh
sh-4.1# echo $TEST

sh-4.1# 



시스템 부팅시 환경변수 자동 등록 

환경변수는 명령어로 등록하면 매번 쉘을 실행시키거나 시스템을 재부팅 할때 마다 등록해야 한다.

시스템 부팅시 혹은 쉘 실행시 매번 등록되어야 하는 환경변수는 설정 파일에 등록해놔야 한다.


시스템 환경변수파일 읽는 순서

etc/rc.d/rc.sysinit
/etc/rc.d/rcN.d # N은 0-6 사이.
/etc/rc.d/rc.local
/etc/profile
/etc/profile.d/*
/etc/bashrc
$HOME/.bash_profile 
$HOME/.bashrc

 

X 윈도우 실행 되면....
/etc/X11/xinit/xinitrc
/etc/X11/xinit/Xclient
/etc/X11/xinit/xinitrc.d/*
/etc/X11/sysconfig/i18n
$HOME/.xinitrc
$HOME/.Xclient
$HOME/.Xclient-$HOSTNAME 

etc 에 있는 파일은 모든 유저에게 적용되고 $HOME 즉 특정 유저의 홈디렉토리에 있는 파일은 해당 유저에게만 적용된다.

대체로 모든 유저에게 적용할때는 /etc/profile에 환경변수를 등록하고 특정 유저는 $HOME/.bash_profile 에 환경변수를 등록한다. 




 일반적인 환경변수

 1) HOME : 사용자의 홈디렉토리

 2) PATH : 실행파일을 찾는 경로

 3) LANG : 프로그램 사용시 기본 지원되는 언어

 4) PWD : 사용자의 현재 작업하는 디렉토리

 5) TERM : 로긴 터미널 타입

 6) SHELL : 로그인해서 사용하는 쉘

 7) USER : 사용자의 이름

 8) DISPLAY : X 디스플레이 이름

 9) VISUAL : visual 편집기의 이름

 10) EDITOR : 기본 편집기의 이름

 11) COLUMNS : 현재 터미널이나 윈도우 터미널의 컬럼수

 12) PS1 : 명령프롬프트변수

 13) PS2 : 2차 명령프롬프트이다. 명령행에서 를 사용하여 명령행을 연장했을 때 나타난다.

 14) BASH : 사용하는 bash 쉘의 경로

 15) BASH_VERSION : bash의 버전

 16) HISTFILE : history 파일의 경로

 17) HISTFILESIZE : history 파일의 크기

 18) HISTSIZE : history에 저장되는 갯수

 19) HISTCONTROL : 중복되어지는 명령에 대한 기록 유무를 지정하는 변수이다.

 20) HOSTNAME : 호스트의 이름

 21) LINES : 터미널의 라인 수

 22) LOGNAME :로그인이름

 23) LS_COLORS : ls 명령의 색상관련 옵션

 24) MAIL : 메일을 보관하는 경로

 25) MAILCHECK : 메일확인시간

 26) OSTYPE : 운영체제 타입

 27) SHLVL :쉘의 레벨

 28) TERM :터미널종류

 29) UID : 사용자의 UID

 30) USERNAME : 사용자이름

(2) 사용예

 1) [posein@www /]$ mkdir $HOME/backup

   [posein@www /]$ ls -ld $HOME/backup

   drwxrwxr-x   2 posein  posein     4096 1월 15 01:31 /home/posein/backup

 2) [posein@www /]$ echo $PS1

   [u@h W]$

    => 프롬프트 형식

      d : '요일 달 날짜'형태로 나타내준다. (예 "Wed Jan 15")

      h : 호스트이름을 보여준다. 보통 '.'를 사용한 이름인 경우 첫번째 '.'까지 보여준다.

      H : 호스트이름을 보여준다.

      l : 쉘의 터미널 장치의 이름을 보여준다.

      s : 쉘의 이름을 보여준다.

      t : 24시 형태의 현재 시간을 보여준다. (예 HH:MM:SS)

      T : 12시 형태의 현재 시간을 보여준다. (예 HH:MM:SS)

      @ : am/pm 12시 형태의 현재시간을 보여준다.

      u : 현재 사용자의 이름을 보여준다.

      w : 현재 작업디렉토리를 보여준다.

      W : 현재작업디렉토리의 마지막 디렉토리만 보여준다.

      ! : 현재 명령의 히스토리 넘버를 보여준다.

      : 를 보여준다.

 3) [posein@www posein]$ PS1="[u@t W]$ "

   [posein@00:53:51 posein]$

    => 프롬프트에서 호스트이름대신에 현재시간을 표시하도록 설정하였다.


반응형