Handbook:AMD64/Working/EnvVar/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:AMD64/Working/EnvVar and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎polski • ‎русский • ‎українська • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
AMD64 핸드북
설치
설치 정보
매체 선택
네트워크 설정
디스크 준비
스테이지 3 설치
베이스 시스템 설치
커널 설정
시스템 설정
도구 설치
부트로더 설정
마무리
젠투 활용
포티지 소개
USE 플래그
포티지 기능
초기화 스크립트 시스템
환경 변수
포티지 활용
파일 및 디렉터리
변수
소프트웨어 브랜치 함께 사용하기
추가 도구
꾸러미 저장소 개별 설정
고급 기능
네트워크 설정
시작하기
고급 설정
모듈러 네트워크
무선 네트워크
기능 추가
동적 관리


환경 변수

도입부

환경 변수는 하나 이상의 프로그램에서 사용하는 정보가 들어있는 이름을 붙인 객체입니다. 수많은 사람은(그리고 리눅스를 처음 접하는) 약간 이상하거나 관리하기가 힘들다는 점을 발견할 것입니다. 그러나, 이렇게 생각하는 것 자체가 실수입니다. 하나 이상의 프로그램의 환경 설정을 바꿀 때 환경 변수를 사용하면 쉽게 처리할 수 있습니다.

중요 예제

다음 표에서는 리눅스 시스템에서 사용하는 많은 변수들을 나열하였고 용도를 설명합니다. 예제 값은 표 다음에 보여드립니다.

변수 설명
PATH 이 변수는 여러분의 시스템이 실행파일을 찾기 위한 콜론으로 구분한 디렉터리 목록을 가집니다. (ls, rc-update, emerge와 같은) 실행 파일의 이름을 입력하였음에도 불구하고 나열한 디렉터리에 이 실행 파일이 없다면 시스템은 (/bin/ls 와 같이 완전한 경로를 지닌 명령을 입력하지 않는 이상) 이 실행 파일을 실행하지 않습니다.
ROOTPATH 이 변수는 PATH와 동일한 기능을 하지만, 루트 사용자가 명령을 입력할때 확인할 디렉터리의 목록만을 가집니다.
LDPATH 이 변수는 동적 링커가 라이브러리를 찾을 콜론으로 구분한 디렉터리 목록을 가집니다.
MANPATH 이 변수는 man 명령어가 man 페이지를 검색할 콜론으로 구분한 디렉터리 목록을 가집니다.
INFODIR 이 변수는 info 명령어가 info 페이지를 검색할 콜론으로 구분한 디렉터리 목록을 가집니다.
PAGER 이 변수는 파일의 내용을 조회할 (lessmore와 같은) 프로그램의 경로를 포함합니다.
EDITOR 이 변수는 파일의 내용을 바꿀 (nanovi와 같은) 프로그램의 경로를 포함합니다.
KDEDIRS 이 변수는 KDE 관련 내용을 포함하는 콜론으로 구분한 디렉터리 목록을 가집니다.
CONFIG_PROTECT 이 변수는 포티지를 업데이트 하는 동안 보호해야 할 공백 문자로 구분한 디렉터리 목록을 가집니다.
CONFIG_PROTECT_MASK 이 변수는 포티지를 업데이트 하는 동안 보호하지 않을 공백 문자로 구분한 디렉터리 목록을 가집니다.

아래에서는 이들 변수에 대한 정의의 예를 보실 수 있습니다:

코드 언급한 변수의 설정 예제
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"

전역 변수 정의

env.d 디렉터리

젠투에선 변수의 정의를 한곳에 모으려 /etc/env.d 디렉터리를 도입했습니다. 이 디렉터리 안에서 여러분은 00basic, 05gcc 등과 같은 수많은 파일을 찾으실 수 있습니다. 각각의 파일에 들어있는 프로그램에서 필요로 하는 변수들은 프로그램 이름 안에 언급되어 있습니다.

예를 들어 gcc를 설치할 때, 다음 변수의 정의를 가진 05gcc라고 하는 파일을 ebuild가 만들어줍니다.

파일 /etc/env.d/05gcc기본 gcc 활성 환경 변수
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)파일을 만들고 이 정의 내용을 이 파일에 입력하시기만 하면 됩니다:

파일 /etc/env.d/99local전역 변수 설정
http_proxy="proxy.server.com:8080"

자체 관리 변수에 동일한 파일을 사용하면, 사용자가 스스로 정의한 변수를 빨리 찾아볼 수 있습니다.

env-update

Several files in /etc/env.d/ define the PATH variable. This is not a mistake: when the env-update command is executed, it will append the several definitions before it updates the environment variables, thereby making it easy for packages (or users) to add their own environment variable settings without interfering with the already existing values.

env-update 스크립트는 /etc/env.d 파일들에 있는 값을 철자 순으로 붙입니다. 파일 이름은 반드시 두자리 숫자로 시작해야 합니다.

코드 env-update의 업데이트 순서
00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

변수의 결합이 항상 일어나는 일은 아니며 ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH, PYTHONPATH 변수들에게만 해당합니다. (/etc/env.d의 철자순 파일에 있는) 다른 변수들에게도 최근 정의한 값을 사용합니다.

COLON_SEPARATED 또는 SPACE_SEPARATED 값 (또한 /etc/env.d/ 파일에 있는 내용도)으로 변수 값을 추가하여 변수 결합 목록에 더 많은 값을 추가할 수 있습니다.

env-update를 실행하면, 스크립트는 /etc/profile.env에 모든 환경 변수를 만들고 이곳에 값을 놓습니다 (이 값은 /etc/profile이 사용합니다). 또한 LDPATH 변수에서 정보를 꺼내와서 /etc/ld.so.conf를 만드는데 사용합니다. 그 다음 ldconfig를 실행하여 동적 링커에서 사용할 /etc/ld.so.cache 파일을 다시 만듭니다.

env-update의 실행 결과를 바로 알고 싶다면 다음 명령을 실행하고 환경을 업데이트 합니다. 자신들만의 젠투 환경을 가진 사용자들은 설치 과정에 있는 다음 명령을 기억할 것입니다.

root #env-update && source /etc/profile
참고
위 명령은 현재 터미널의 새로운 콘솔과 하위 요소에서 사용할 변수만을 업데이트 합니다. 따라서 X11에서 작업중이라면 여러분이 열어놓은 모든 터미널에서 source /etc/profile명령을 실행하거나 X 를 다시 시작해서 새로운 터미널이 새 변수를 사용할 수 있게해야합니다. 로그인 관리자를 사용하고 있다면 루트 사용자로 로그인해서 /etc/init.d/xdm 를 다시 시작하십시오.
중요
다른 변수를 정의할 때 쉘 변수를 사용할 수 없습니다. 이는 FOO="$BAR"($BAR는 또 다른 변수)와 같은 구문의 사용을 금지한다는 의미입니다.

지역 변수 설정

사용자별 변수

여러분은 항상 환경 변수를 전체적으로 설정하길 바랄 것은 아닙니다. 이를테면 /home/my_user/bin 을 추가하고 (여러분이 있는) 현재 작업 디렉터리를 PATH변수에 추가하고 싶지만 시스템에 있는 모든 사용자들에게 같은 PATH값을 주고 싶지 않을 때가 있을 것입니다. 이 환경 변수를 지역적으로 설정하고 싶다면 ~/.bashrc~/.bash_profile을 사용해야 합니다.

파일 ~/.bashrc로컬용 PATH 확장
# A colon followed by no directory is treated as the current working directory
PATH="${PATH}:/home/my_user/bin:"

로그아웃/로그인한 수 PATH변수는 업데이트됩니다.

세션별 변수

때로는 더 엄격한 정의가 필요합니다. 바이너리 자신의 경로를 사용하지 않고 임시로 만든 디렉터리에서 바이너리를 사용할 수 있게 하거나 필요에 따라 잠깐 ~/.bashrc를 편집할 수도 있습니다.

이 경우 현재 세션의 PATH 변수는 export 명령으로 설정하십시오. 사용자가 로그아웃하기 전까지는 PATH 변수는 임시 설정으로 사용합니다.

root #export PATH="${PATH}:/home/my_user/tmp/usr/bin"