Raspberry Pi_Kor_10.2.2 환경변수(environment variable)


Published Book on Amazon


All of IOT

Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1

All of IOT

Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사

물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)

최신 라즈베리파이(Raspberry Pi)로 시작하는 사

물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents


10.2.2  환경변수(environment variable)

 

시스템을 booting 하고 특정 사용자가 logon 하면, 사용자에게 사전에 정의된 형식으로 화면을 보여 주고, 사용자가 어떤 명령을 지시하면 사전에 지정된 방식으로 그 명령을 처리해 준다. 이때 사용자는 사전에 정의된 내용을 확인하여 구체적인 처리 방법을 결정하게 된다. 이렇게 시스템이 작동하는데 필요한 중요한 결정을 할 때는 사전에 정의된 많은 자료들을 참조하게 된다. 이러한 자료들 중에서 시스템이 자주 사용하는 중요한 변수들에 대해서 그 값을 특별한 장소에 저장하고 있는데, 이것을 환경변수(environment variable) 라고 한다.  

 

이 환경변수에는 시스템에 작동하면서 필요한 많은 정보 중에서 아주 중요한 정보만을 선별하여 저장하고 있으며, 특정 파일에 저장되어 있는 것이 아니라 시스템의 메모리에 저장되어 있어서 필요하면 해당 정보를 즉시 사용할 수 있도록 되어 있다.

 

10.2.2.1    "env" 명령 - 환경변수의 확인

 

그럼 어떤 정보들이 환경변수에 저장되어 있는지 알아보자. 이럴 때 사용하는 명령이 "env" 명령이다.

 

[명령 형식]

env  [option]

 

[명령 개요]

    환경변수에 저장되어 있는 정보의 내용을 확인한다.

    user 권한    -- 일반 user.

 

[상세 설명]

    Option을 지정하지 않으면 현재 값을 표시한다.

 

[주요 Option]

-u

--unset=NAME

remove variable from the environment

 


 

[사용 Example]

먼저 현재의 환경변수가 어떻게 정의되어 있는지를 확인해 보자. 다음과 같이 명령을 실행한다.

 

pi@raspberrypi ~ $ env

TERM=xterm

SHELL=/bin/bash

SSH_CLIENT=192.168.1.230 49229 22

SSH_TTY=/dev/pts/0

USER=pi

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:

MAIL=/var/mail/pi

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

PWD=/home/pi

LANG=en_US.UTF-8

SHLVL=1

HOME=/home/pi

LOGNAME=pi

SSH_CONNECTION=192.168.1.230 49229 192.168.1.202 22

_=/usr/bin/env

 

환경변수에는 많은 항목들이 포함되어 있다. 이중에서 몇 가지만 그 의미를 알아 보기로 한다.

    SHELL=/bin/bash

현재 사용되는 Shell 프로그램을 의미한다.

 

    USER=pi

현재 logon 된 사용자 계정을 말한다

 

 

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:~~~

Shell 명령을 실행할 때 프로그램을 탐색하는 순서를 의미한다. ":"은 각각의 경로를 구분하는 기호이다. 왼쪽부터 시작해서 오른쪽으로 검색한다

 

    PWD=/home/pi

현재 directory 위치를 의미한다 

 

    HOME=/home/pi

현재 logon 된 사용자의 home directory를 의미한다

 

현재의 환경변수가 어떻게 되어 있는지를 확인해 보는 또 다른 방법이 있다. 시스템이 가지고 있는 환경변수는 다른 명령에서 <$환경변수>의 형태로 자유롭게 사용할 수 있다.

 

여기서는 echo 명령을 이용해서 PATH 환경변수의 값을 알아 볼 것이다.

 

pi@raspberrypi ~ $ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

 

 

 


 

10.2.2.2    "export" 명령 - 환경변수의 정의

 

환경변수를 추가로 정의하거나 기존의 환경변수에 대한 값을 수정할 수도 있다. 환경변수를 조정하는 명령은 export 명령이다.

 

[명령 형식]

export  [option]   environment-variable="value"

 

[명령 개요]

    환경변수를 새롭게 정의하거나 내용을 변경한다.

    user 권한    -- 일반 user.

 

[상세 설명]

    환경변수 이름은 통상 대문자로 정의한다.

    정의된 환경변수는 자신의 Shell 이나 child Shell에서 사용할 수 있다.

    환경변수에 저장된 값은 파일에 저장되는 것이 아니라 메모리에 저장되어 있는 자료이므로 영구히 보관되지 않으며, 시스템이 down되면 없어진다. 따라서 환경변수를 변경했다고 해서 그 값이 영원히 보관되는 것이 아니며, 그 변경은 일시적인 효과만 있다는 것이다.

    적용범위 – shell에서 변경한 경우는 해당 Shell 내에서만 유효하며, 다른 Shell에서는 적용되지 않는다. 특정 terminal에서 변경한 경우에도 다른 Terminal 화면을 열면 변경되지 않은 채로 있다.

 

[주요 Option]

 

 

 

[사용 Example]

현재의 PATH 환경변수의 값에 "/opt/testbin/"을 추가해 볼 것이다. 다음과 같이 변경 작업을 한 다음 다시 내용을 확인해 보자. 예상한 대로 PATH 값이 변경되어 있다.

 

pi@raspberrypi ~ $ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

pi@raspberrypi ~ $ export PATH="$PATH:/opt/testbin"

pi@raspberrypi ~ $ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/opt/testbin

 

다음은 시스템에서 기본 정의되지 않았지만, 별도 사용하기 위해서 새로운 환경변수를 정의한 사례이다.

 

pi@raspberrypi ~ $ env

 

pi@raspberrypi ~ $ export TESTENV="$HOME/Script"

pi@raspberrypi ~ $ env

 

pi@raspberrypi ~ $ echo $TESTENV

 

 

 

10.2.2.3    환경변수 값을 영구적으로 고정하기

 

통상 환경변수의 값은 시스템이 down되면 없어지고, 새로이 시스템을 시작하면 이전의 값을 사용할 수 없다. 만약 환경변수에 설정된 값을 영구히 고정하고자 하면 profile을 이용할 수 있다.

 

시스템에서 제공하는 다음 profile을 이용할 수 있다.

    시스템 profile          -- /etc/profile 파일         -- 모든 사용자에게 적용된다.      

    User profile             -- ~/.profile 파일                      -- 특정 사용자에게만 적용된다.

 

 


 

Leave a Reply