GentooX86 Handbook_Ko_2-5
1.1.1. 그것들은 데체 뭔가요? ¶환경변수는 하나 이상의 어플리케이션에서 사용되는 정보를 포함하고 있는 이름이 붙은 객체입니다. ㅤ많은 사용자들 (그리고 특히 리눅스를 갓 접한) 은 이것이 약간 이상하거나 관리가 안되는 걸 발견할 것입니다. 그러나 그렇게 생각하는건 실수입니다. 환경변수를 사용함으로 인해 하나 이상의 어플리케이션에서 환경설정을 쉽게 변경할 수 있습니다.
1.1.2. 중요한 예 ¶다음의 표에서는 리눅스 시스템에서 사용되는 많은 변수들을 나열하고 그들의 사용에 대해 설명합니다. 예제 값들은 표 다음에 나옵니다.
아래에서 이들 변수에 대한 선언의 예를 보실 수 있습니다. 예제 1-1 : 선언 예제
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
1.2.1. /etc/env.d 디렉토리 ¶이 변수들의 정의를 한데 모으기 위해 젠투는 /etc/env.d 디렉토리를 소개합니다. 이 디렉토리 안에는 00basic, 05gcc등과 같은 수많은 파일들을 찾을 수 있을 것입니다. 이것은 그들의 이름에서 알려주는 어플리케이션에서 필요한 변수들이 들어있습니다.
예를들어 gcc를 설치했을때 ebuild에 의해 만들어진 05gcc라 불리우는 파일에는 다음의 변수들의 정의가 들어있습니다.
예제 2-1 : /etc/env.d/05gcc
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" 다른 배포판은 변경사항을 알려주거나 몇몇 환경 변수 정의를 /etc/profile에 다 넣거나 다른 위치에 넣습니다. 젠투는 반면에 사용자 여러분(그리고 또한 포티지)을 위해 관리하기 쉽게 만들었고 환경변수는 환경변수를 저장할 수 있는 수많은 파일에 신경쓰는 것 없이 관리합니다.
예를 들어 gcc가 갱신 되었을때, /etc/env.d/05gcc 파일도 사용자와의 상호작용에 의한 요청 없이 갱신됩니다.
이는 포티지의 잇점일 뿐만 아니라 사용자로서의 잇점이기도 합니다. 경우에 따라 시스템 범위영역에서 어떤 환경변수를 설정하도록 요청할지도 모릅니다. 예제에서와 같이 우리는 http_proxy 변수를 잡도록 하겠습니다. /etc/profile을 거대하게 부풀리는 대신에, 단지 /etc/env.d/99local 파일을 만들고 다음의 정의내용을 입력할 수 있습니다.
예제 2-2 : /etc/env.d/99local
http_proxy="proxy.server.com:8080" 독자 여러분의 모든 변수들을 쓰기 위해 같은 파일 사용함으로써, 독자여러분 자신이 정의산 변수들을 빨리 훑어볼 수 있습니다.
1.2.2. env-update 스크립트 ¶/etc/env.d의 많은 파일들은 PATH변수를 정의합니다. 이는 잘못된 것이 아닙니다. env-update를 독자여러분이 실행할때 이는 환경변수를 갱신하기전에 수많은 정의를 붙이게 될 것이고, 그것으로 인해 패키지를 독자여러분 자신의 환경 변수 설정에 이미 존재하는 값에 방해받지 않고 쉽게 추가할 수 있도록 합니다.
env-update 스크립트는 /etc/env.d 파일들에 알파벳 순서대로 값이 붙을 것입니다. 파일 이름은 두자리 숫자로 시작되어야만 합니다.
예제 2-3 : env-update에 의해 사용되는 갱신순서
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
변수의 병합은 항상 일어나는 것이 아니라 다음 변수에 대해 일어납니다.
KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK.
다른 모든 변수들을 위해 최근 정의된 값(/etc/env.d에 있는 파일들의 알파벳 순서대로)이 사용됩니다.
env-update를 실행할때 스크립트는 모든 환경변수를 만들것이고 그들을 /etc/profile.env(/etc/profile에 의해 사용됩니다)에 놓을 것입니다. 이 또한 LDPATH 변수로부터 정보를 추출하여 /etc/ld.so.conf를 만드는데 사용됩니다. 이 다음에는 동적 링커에 의해 사용될 /etc/ld.so.cache를 재생성하기 위해 ldconfig를 실행할 것입니다.
env-update의 효과를 실행후 즉시 눈으로 보고 싶다면 환경을 업데이트하기 위해 다음명령을 실행합니다. 직접 젠투를 설치한 사용자분들이라면 아마 설치과정으로부터 다음을 기억할 것입니다.
예제 2-4 : 환경 갱신
# env-update && source /etc/profile 유의사항 : 위의 명령은 단지 현재 터미널과 새로운 콘솔 그리고 그들의 자식 콘솔의 변수에 한해서만 갱신합니다. 그래서 X11에서 작업하는 경우 source /etc/profile을 매 새로운 터미널을 열때마다 혹은 X를 다시 시작할때마다 일이리 쳐줄 필요가 있어 모든 새로운 터미날은 새로운 변수를 근원요소로 갖습니다. 만약 로긴 매니저를 사용한다면 루트로 들어와서 /etc/init.d/xdm restart를 입력하십시와 그렇지 않으면 로그아웃하고 새로운 변수 값으로 자식 터미널에 변수값을 뿌리기 위해 X로 다시 로그할 필요가 있을 것입니다.
중요 : 다른 변수를 정의할때 쉘 변수는 사용할 수 없습니다. 이는 FOO="$BAR"($BAR는 다른 변수입니다)와 같은것이 금지된다는 의미입니다.
1.3.1. 사용자 지정 ¶환경변수를 전역적으로 정의하는것을 항상 원하는건 아닐 것입니다. 예를 들어 /home/my_user/bin과 현재 작업디렉토리 (독자여러분이 있는 바로 "이" 디렉토리) 를 PATH 변수에 새로추가하길 원할지도모르겠지만, 같은 시스템에 있는 모든 다른 사용자들이 그들만의 PATH를 가지는것을 원하지는 않을 것입니다. 환경변수를 지역적으로 정의하려면 ~/.bashrc 나 ~/.bash_profile를 사용하면 될 것입니다.
예제 3-1 : ~/.bashrc의 지역적 사용을 위한 PATH 확장
(A colon followed by no directory is treated as the current working directory)
PATH="${PATH}:/home/my_user/bin:"
재로긴하면, PATH 변수가 갱신될 것입니다.
1.3.2. 세션 지정 ¶심지어 때로는 엄한 정의가 요구될 때도 있습니다. 아마도 바이너리 자신들의 경로를 사용하지 않거나 혹은 독자여러분들에게 잠깐 필요한 이유로 ~/.bashrc를 편집하지 않고 독자여러분들이 만들어놓은 임시 디렉토리로부터 바이너리를 사용할 수 있게 하고 싶어할 것입니다.
이런 경우 단지 PATH변수를 현재 세션에 export 명령을 이용하여 정의할 수 있습니다. 로그아웃하지 않는동안은 PATH 변수는 임시 설정내용으로 계속 사용될 것입니다.
예제 3-2 : 세션 지정 환경변수의 정의
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
You will be given a post of trust and responsibility. |











![[http]](/imgs/http.png)