"Trans:GentooX86Handbook2-5"의 두 판 사이의 차이
Darkcircle (토론 | 기여) (→사용자별) |
Darkcircle (토론 | 기여) |
||
(같은 사용자의 중간 판 5개는 보이지 않습니다) | |||
91번째 줄: | 91번째 줄: | ||
/etc/env.d 에 있는 수많은 파일에는 {{blue|PATH}} 변수를 정의합니다. 이것은 잘못된 것이 아닙니다. {{blue|env-update}}를 실행하면 환경 변수를 업데이트 하기 전에 각 패키지를 위해 수많은 정의 내용을 덧붙여서 기존에 있는 값과 혼동되지 않게 제각각이 가진 환경 변수 값을 쉽게 붙일 수 있도록 합니다. | /etc/env.d 에 있는 수많은 파일에는 {{blue|PATH}} 변수를 정의합니다. 이것은 잘못된 것이 아닙니다. {{blue|env-update}}를 실행하면 환경 변수를 업데이트 하기 전에 각 패키지를 위해 수많은 정의 내용을 덧붙여서 기존에 있는 값과 혼동되지 않게 제각각이 가진 환경 변수 값을 쉽게 붙일 수 있도록 합니다. | ||
− | {{blue|env-update}} 스크립트는 /etc/env.d 파일들에 있는 값을 철자 순으로 | + | {{blue|env-update}} 스크립트는 /etc/env.d 파일들에 있는 값을 철자 순으로 붙입니다. 파일 이름은 반드시 두자리 숫자로 시작해야 합니다. |
{{Example|코드 예제 2.3: env-update에서 사용하는 업데이트 순서|<pre> | {{Example|코드 예제 2.3: env-update에서 사용하는 업데이트 순서|<pre> | ||
116번째 줄: | 116번째 줄: | ||
}} | }} | ||
− | === | + | === 지역 변수 지정하기 === |
==== 사용자별 ==== | ==== 사용자별 ==== | ||
여러분은 항상 환경 변수를 전체적으로 설정하길 바랄 것은 아닙니다. 이를테면 /home/my_user/bin 을 추가하고 (여러분이 있는) 현재 작업 디렉터리를 {{blue|PATH}}변수에 추가하고 싶지만 시스템에 있는 모든 사용자들에게 같은 {{blue|PATH}}값을 주고 싶지 않을 때가 있을 것입니다. 이 환경 변수를 지역적으로 설정하고 싶다면 ~/.bashrc나 ~/.bash_profile을 사용해야 합니다. | 여러분은 항상 환경 변수를 전체적으로 설정하길 바랄 것은 아닙니다. 이를테면 /home/my_user/bin 을 추가하고 (여러분이 있는) 현재 작업 디렉터리를 {{blue|PATH}}변수에 추가하고 싶지만 시스템에 있는 모든 사용자들에게 같은 {{blue|PATH}}값을 주고 싶지 않을 때가 있을 것입니다. 이 환경 변수를 지역적으로 설정하고 싶다면 ~/.bashrc나 ~/.bash_profile을 사용해야 합니다. | ||
− | {{Example|코드 예제 3.1: 지역에서 사용할 ~/.bashrc의 PATH값 확장하기|{{red|콜론 뒤에 디렉터리를 표기하지 않는 것은 현재 작업 디렉토리로 취급합니다)<br/>}} | + | {{Example|코드 예제 3.1: 지역에서 사용할 ~/.bashrc의 PATH값 확장하기|{{red|(콜론 뒤에 디렉터리를 표기하지 않는 것은 현재 작업 디렉토리로 취급합니다)<br/>}} |
<nowiki>PATH="${PATH}:/home/my_user/bin:"</nowiki> | <nowiki>PATH="${PATH}:/home/my_user/bin:"</nowiki> | ||
}} | }} | ||
128번째 줄: | 128번째 줄: | ||
==== 세션별 ==== | ==== 세션별 ==== | ||
+ | 때로는 더 엄격한 정의가 필요할 수도 있습니다. 바이너리 자신의 경로를 사용하지 않고 여러분이 임시로 만든 디렉터리로부터 바이너리를 사용할 수 있게 하거나 필요에 따라서 잠깐 ~/.bashrc를 편집하기를 원하실 수도 있습니다. | ||
+ | |||
+ | 이 경우 {{blue|export}}명령을 사용해서 현재 세션에서만의 {{blue|PATH}}변수를 정의할 수 있습니다. 여러분이 로그아웃 하지 않을 때까지 {{blue|PATH}} 변수를 임시 설정으로 사용할 것입니다. | ||
+ | |||
+ | {{Example|코드 예제 3.2: 세션별 환경 변수 설정하기|<nowiki># export PATH="${PATH}:/home/my_user/tmp/usr/bin"</nowiki><br/> | ||
+ | }} | ||
+ | |||
+ | [[Category:GentooTrans]] |
2013년 3월 27일 (수) 20:29 기준 최신판
목차
환경 변수
환경 변수라고?
뭐하는 건가요
환경 변수는 하나 이상의 프로그램에서 사용하는 정보가 담긴 이름이 붙은 객체입니다. 대부분의 사용자(와 특히 리눅스에 처음 접하는 분들) 은 좀 이상하다거나 관리가 안되는 걸로 알고 계십니다. 그러나, 이렇게 보신건 실수입니다. 어떤 환경 변수 하나를 사용하면 하나 이상의 프로그램에 대한 설정을 쉽게 바끌 수 있습니다.
중요한 예제
다음 표에서는 리눅스 시스템에서 사용하는 많은 변수들을 나열하였고 용도를 설명합니다. 예제 값은 표 다음에 보여드립니다.
변수 | 설명 |
---|---|
PATH | 이 변수는 여러분의 시스템이 실행파일을 찾기 위한 콜론으로 구분한 디렉터리 목록을 가집니다. (ls, rc-update, emerge와 같은) 실행 파일의 이름을 입력하였음에도 불구하고 나열한 디렉터리에 이 실행 파일이 없다면 시스템은 ( /bin/ls 와 같이 완전한 경로를 지닌 명령을 입력하지 않는 이상) 이 실행 파일을 실행하지 않을 것입니다. |
ROOTPATH | 이 변수는 PATH와 동일한 기능을 하지만, 루트 사용자가 명령을 입력할때 확인할 디렉터리의 목록만을 가집니다. |
LDPATH | 이 변수는 동적 링커가 라이브러리를 찾을 콜론으로 구분한 디렉터리 목록을 가집니다. |
MANPATH | 이 변수는 man 명령어가 man 페이지를 검색할 콜론으로 구분한 디렉터리 목록을 가집니다. |
INFODIR | 이 변수는 info 명령어가 info 페이지를 검색할 콜론으로 구분한 디렉터리 목록을 가집니다. |
PAGER | 이 변수는 파일의 내용을 조회할 (less나 more와 같은) 프로그램의 경로를 포함합니다. |
EDITOR | 이 변수는 파일의 내용을 바꿀 (nano나 vi와 같은) 프로그램의 경로를 포함합니다. |
KDEDIRS | 이 변수는 KDE 관련 내용을 포함하는 콜론으로 구분한 디렉터리 목록을 가집니다. |
CONFIG_PROTECT | 이 변수는 포티지를 업데이트 하는 동안 보호해야 할 공백문자로 구분한 디렉터리 목록을 가집니다. |
CONFIG_PROTECT_MASK | 이 변수는 포티지를 업데이트 하는 동안 보호하지 않을 공백문자로 구분한 디렉터리 목록을 가집니다. |
아래에서는 이들 변수에 대한 정의의 예를 보실 수 있습니다.
코드 예제 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" |
전역 변수 지정하기
/etc/env.d 디렉터리
이 변수의 정의를 한곳에 모으기 위해 젠투에선 /etc/env.d 디렉터리를 도입했습니다. 이 디렉터리 안에서 여러분은 00basic, 05gcc 등과 같은 수많은 파일을 찾으실 수 있습니다. 각각의 파일에 들어있는 프로그램에서 필요로 하는 변수들은 프로그램 이름 안에 언급되어 있습니다.
예를 들어 gcc를 설치할 때, 다음 변수의 정의를 가진 05gcc라고 하는 파일을 ebuild가 만들어줍니다.
코드 예제 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" |
다른 배포판에서는 바뀐 내용을 알려주거나 각각의 환경 변수 정의를 추가할 때 /etc/profile 등의 위치에 넣습니다. 그러나 젠투에서는 환경 변수를 포함할 수 있는 수많은 파일에 일일히 신경쓰지 않게 여러분과 포티지를 위해 환경변수를 좀 더 쉽게 관리할 수 있게 해줍니다.
예를 들어 gcc를 업데이트하면 사용자 확인 절차 요구 없이 /etc/env.d/05gcc 파일을 업데이트합니다.
이는 포티지 뿐만 아니라 사용자 입장에서의 여러분께도 이득입니다. 때로는 시스템 전체와 관련된 일부 환경 변수를 설정하라고 요청을 받을 수도 있습니다. 아래 예를 통해 http_proxy 변수를 보도록 하겠습니다. /etc/profile을 점점 크게 하는 대신에 (/etc/env.d/99local)파일을 만들고 이 정의 내용을 이 파일에 입력하시기만 하면 됩니다.
코드 예제 3.3: /etc/env.d/99local |
http_proxy="proxy.server.com:8080" |
이러한 변수들에 대해 같은 파일을 사용하면서 여러분 자신이 지정한 변수에 대해 간단한 개요를 포함할 수 있습니다.
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" |
변수의 결합이 항상 일어나는 일은 아니고 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 값 (또한 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는 또 다른 변수)와 같은 구문의 사용을 금지한다는 의미입니다
지역 변수 지정하기
사용자별
여러분은 항상 환경 변수를 전체적으로 설정하길 바랄 것은 아닙니다. 이를테면 /home/my_user/bin 을 추가하고 (여러분이 있는) 현재 작업 디렉터리를 PATH변수에 추가하고 싶지만 시스템에 있는 모든 사용자들에게 같은 PATH값을 주고 싶지 않을 때가 있을 것입니다. 이 환경 변수를 지역적으로 설정하고 싶다면 ~/.bashrc나 ~/.bash_profile을 사용해야 합니다.
코드 예제 3.1: 지역에서 사용할 ~/.bashrc의 PATH값 확장하기 |
(콜론 뒤에 디렉터리를 표기하지 않는 것은 현재 작업 디렉토리로 취급합니다) PATH="${PATH}:/home/my_user/bin:" |
다시 로그인하면, PATH 변수가 업데이트 될 것입니다.
세션별
때로는 더 엄격한 정의가 필요할 수도 있습니다. 바이너리 자신의 경로를 사용하지 않고 여러분이 임시로 만든 디렉터리로부터 바이너리를 사용할 수 있게 하거나 필요에 따라서 잠깐 ~/.bashrc를 편집하기를 원하실 수도 있습니다.
이 경우 export명령을 사용해서 현재 세션에서만의 PATH변수를 정의할 수 있습니다. 여러분이 로그아웃 하지 않을 때까지 PATH 변수를 임시 설정으로 사용할 것입니다.
코드 예제 3.2: 세션별 환경 변수 설정하기 |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin" |