Shell의 환경변수 - Ubuntu
kleinstein 씀 (금, 2006/01/06 - 6:41pm) 강좌
저는 개인적으로 아직 Shell 에 대해 잘 모릅니다. 리눅스초보답게요.. -.-
아래의 내용에 고수분들이 좀더 알아야 할 만한 사항이나 기타 등등을 추가해 주시면 저같은 초보들은 아주아주 고맙겠습니다.
환경변수는 쉘에서 명령들을 사용할때 편하게 사용하기 위해서 사용된다고 합니다. 예를 들어 어떤 프로그램이 놓인 위치를 정하거나 기본 프록시설정을 해주기위해서 그렇답니다. 저도 아직은 잘 이해가 안됩니다만..
어쨋거나 이 환경변수들은 상속관계가 적용되어서 부모프로세스의 환경변수들을 자녀프로세스가 그대로 상속받고 또 그 자녀의 자녀프로세스로 계속 상속된다고 합니다.
이런 환경변수들을 정의하는데에는 여러방법이 쓰이는데, 사용목적에 따라 달라진다네요.. 임시로 지금 현재만 사용할수 있게 정의할수도 있고 - 이럴경우 쉘을 다시 시작하면 사라지겠지요 - 매번 자동으로 이 설정들이 적용되게끔 할수도 있답니다. 그러나 그 형태(문법)는 이렇게 사용할 목적이든 저렇게 사용할 목적이든 아래와 같이 똑같답니다.
변수명=변수값
echo 명령을 사용하면 변수명에 어떤값이 현재 들어 있는지 알수 있다고 합니다.
echo $변수명
위와 같이 명령을 주면 말이지요.. 또 printenv라는 명령으로 모든 변수들을 한꺼번에 볼수도 있다네요.. 저같은 초보자 여러분들은 한번 printenv 명령을 콘솔을 열어서 한번 줘보시죠.. 어떤 환경변수값들이 현재 정의 되어 있는지..
그리고 export 라는 명령어는 이런 환경변수를 현재 사용중인 쉘에서 뿐만아니라 이 쉘에서 입력해서 실행되는 모든 프로그램들에게까지 영향을 미치도록 하는 명령어랍니다. 아래와 같은 형식으로 사용한답니다.
export 변수명
여기서 곧바로 변수값을 대입시켜도 되겠지요..
export VARIABLE=0815
이렇게 말이죠.. 흠.. 개인적으로 저는 쉘에서 한글이 깨지거나 할때
export Lang=ko_KR, 어쩌구..
이런 명령을 주라는둥.. 하는 글들을 본기억이 나는데 이게 다 환경변수를 바꿔주라는 말이었군여.. 이제서야.. 대충 이런게 뭐하는건지 알겠네요.. 아.. 초보란...
계속적으로 환경변수가 설정되어 있도록 바꾸기
앞에서 말한것 처럼 현재만 잠시 환경변수가 적용되는게 아니라 껐다 켜도 늘 지정되어 있도록 할수 있다고 합니다.
근데 이렇게 하려면 어떻게 로그인을 하는지에 따라 다르다고 하네요..
예를들어 그래픽환경으로 로그인할때 (GDM, KDM, XDM 등등.) 와 텍스트 환경으로 로그인할때가 다르답니다.
그래픽 로그인 환경일때 :
여기서는 etc/X11/Xsession.d 디렉토리에 90으로 시작하는 파일에 그 환경변수를 설정하는거라네요.. 직접 열어보니 다른 숫자로 시작하는 것들도 있는데 이게 다 뭔지..-,.-a
암튼.. 여기서 환경변수를 적으면 계속 적용된답니다.
텍스트 콘솔 로그인 환경일때 :
/etc/profile 라는 파일에다가 환경변수를 적어 주는 거라네요.. 몇가지 환경변수 (PATH, PS1) 같은 것들은 이미 기본설정으로 미리 설정되어 있다고 합니다.가장 쉽게는 이런 변수들을 원하는데로 바꿔주는거라고 합니다. 막상 직접 열어서 보니 쉘에 무지한인 저같은 초보는 이것마저도 프로그램소스처럼 되어 있어서 언뜻 겁부터 납니다만.. 뭐 .. 이까이꺼.. 그냥 봐 줍니다.. 쭉~~
혹시나 바꿀때는 원래 있던걸 # 를 사용해서 코멘트 처리하면 다음에 다시 살릴수 있으니까 그렇게 안전하게 바꾸라네요..
한명의 사용자를 위해 바꾸기 :
한명의 사용자를 위해 환경변수를 바꾸려면 그 사용자 계정 아래에 있는 .profile 파일에다가 기록해두면 된답니다. 흠.. 이제서야 좀 감이 생기는군여.. 그러니까 쉘을 잘 사용하려면 어떤 환경변수들이 있는지 그 역할은 무엇인지 그리고 보통 어떤값들을 넣는지 좀 알아야 겠네요.. 고수님들 혹시 시간나시면 이런거 좀 알려주시죠?
만약 ~/.bash_profile 이 존재하면 위에서 말한 ~/.profile 파일은 Bash쉘에서 무시된다고 합니다. 또 ~/.bashrc 파일에 들어있는 환경변수가 ~/.profile 안에 들어있는 환경변수들을 뒤엎어 써버린다고 하네요..
~/.bash_profile 랑 ~/.bashrc 요놈들이 우선권이 있는거네요..
또 ~/.bashrc 안의 환경변수는 처음 쉘이 시작할때 한번 정의되고 다음부터는 이게 계속 상속된다고 합니다. 물론 이 쉘에서 또다른 쉘을 부를때 그렇겠지요.. 아닌가요?
자주 쓰이는 환경변수의 예..
PATH 추가하기..
예를 들어 주로 찾게되는 경로에 /usr/local/progdir 를 넣고 싶으면 아래와 같이 하면 된답니다 :
PATH=$PATH:/usr/local/progdir
export PATH
위의 명령은 기존에 있는 PATH 변수의 뒤에다가 좀전의 /usr/local/progdir 이 경로를 달아주기만 하는거랍니다. 그리고 export 명령으로 이 변수가 쉘환경에 계속 기본적으로 사용되게끔 해주는거라고 하네요..
프록시 설정하기..
인터넷이 프록시를 사용하면..
아래의 명령으로 그 주소를 정해줄수 있다고 합니다 :
export http_proxy=http://mein.proxy.firma
혹은 포트값을 주려면
export http_proxy=http://mein.proxy.firma:3128
이렇게요..
마찬가지로 FTP 를 위해서는 ftp_proxy 로 http_proxy를 대신 써주면 된답니다.
로케일 설정..
Locale
에러메세지나 등등의 메시지를 자기나라말로 나오게끔 하는 로케일 설정을 위해서는 (독일도 한국처럼 영어를 기본으로 하지않기 때문에 우리와 비슷한것 같습니다.) 아래의 명령으로 그 환경변수인 LANG 이라는 변수에다가 이미 약속되어있는 변수값을 선택해서 넣어줍니다.
LANG=de_DE.UTF-8
export LANG
위의 경우는 독일어구요..한글은
LANG=ko_KR.UTF-8
export LANG
이렇겠지요?
보통 리눅스를
보통 리눅스를 설치하시면 기본 셸로 bash가 설정되어 있을 겁니다.
찾아보시면 bash에 관한 자료는 영어, 한글자료도 많이 있구요 공식 레퍼런스 문서는
man bash를 처보시거나 다음 자료를 참고하시면 됩니다.
http://man.kldp.org/wiki/FrontPage?action=GetManPage&lang=ko&man=bash
http://www.gnu.org/software/bash/manual/bashref.html
관심이 있으신 셸 변수에 관한 설명은 5장에 나와있습니다.
bbs.kldp.org에 올라왔던 글인데...
윗 글은 bbs.kldp.org에 올라왔던 글 이었는데, kleinstein = semacro 님 인가요? :?
----
I paint objects as I think them, not as I see them.
Ubuntu Dapper user / Ubuntu KoreanTeam / Lanuchpad karma 8723
----
I paint objects as I think them, not as I see them.
atie's minipage
KLDP HOW에 있는 고급
KLDP HOWTO에 있는 고급 Bash 스크립팅 가이드 도 참고 하기 좋더군요.
댓글 달기