9. 도서관/__다. UNIX

.cshrc

행복 금융 2008. 8. 21.




.cshrc File

C shell의 startup file인 .cshrc의 작성 예입니다.
먼저, 환경변수나, 쉘변수 부분을 읽고 이 문서를 보세요. 그리고 추가로 쉘 스크립트를 알아야 하는데, 따로 설명하지 않고 예에서 그때끄때 설명하겠읍니다.
이 문서를 먼저 잘 이해하면, 자신의 환경 구축에 응용할 수 있을것입니다.


Login시에 먼저 쉘이 수행됩니다. 또한 프로그램 수행중에 subshell이 실행 되기도 합니다. xterm을 띄워도 새로운 쉘이 실행 됩니다. 쉘이 새로 실행될때면 먼저 .cshrc를 참조 합니다.

if ( `uname -r` ==  5.5 || `uname -r` == 5.4  ) then
        set path = ( $HOME/bin /bin /usr/bin /usr/sbin /usr/ucb )
        set path = ( $path /solar/bin /usr/local/bin /usr/teTeX/bin )
        set path = ( $path /usr/bin/X11 /usr/openwin/bin )
        set path = ( $path /usr/remote/bin /usr/afsws/bin /user/afsws/etc )
        set path = ( $path /usr/ccs/bin /opt/SUNWspro/bin )
        set path = ( $path . )  

        setenv LD_LIBRARY_PATH /solar/lib:/solar/X11R5/lib:/usr/lib:/usr/local/l
        setenv SC_LICENSE_FILE /opt/SUNWspro/SunTech_License/license.dat
        setenv MANPATH /usr/man:/solar/local/man:/solar/X11R5/share/man:/opt/SUN
        setenv CLASSPATH /solar/netscape/moz3_0.zip
        setenv LANG ko

        source $HOME/.alias.solaris
        source $HOME/.alias.han

else
        set path=($HOME/bin /bin /usr/bin /usr/sbin /usr/ucb /usr/etc)
        set path=($path /usr/local/bin)
        set path=($path /usr/bin/X11)
        set path=($path /usr/remote/bin /usr/games)
        set path=($path .) 

        setenv MANPATH /usr/local/man:/usr/man:/usr/openwin/man
        setenv LD_LIBRARY_PATH /usr/lib:/usr/local/lib:/usr/lib/X11
        setenv CLASSPATH /usr/local/netscape/moz3_0.zip
        setenv LANG C

        source $HOME/.alias.sun
endif

setenv HWPDIR /solar/hwpx
setenv HWPSYS /solar/hwpx/sys
setenv XAPPLRESDIR .
setenv NNTPSERVER  141.223.7.47
setenv PRINTER ps4

set cdpath = ( ~ )
set filec 
set history = 50
set noclobber
set cdpath = (~ ~/com_physics)

stty sane
stty erase '^H'
stty kill '^?'
stty intr '^C'
stty cs8 -parenb -istrip -ixon

source ~/.alias

set prompt = "`hostname`/$user `dirs` {\!}"
alias   cd 'cd \!*;set prompt="`hostname`/$user `dirs` {\!}"'

이 코드에 대한 설명이 아래에 이어집니다.

umask 022
umask는 이 화일에 대한 허용여부를 지정해 준다.
뒤에 나오는 숫자 세개는 각각 user, group, other에 해당한다.각 숫자는 8진수이다. 읽기방지는 4, 쓰기방지는 2, 실행방지는 1의 값을 갇는다. 위의 경우, group과 other부분의 값이 2이다. 이것은 자신외에 다른사람은 이화일에 내용을 수정 할 수 없다는 뜻이다. 다른 예를 들면, other에게 읽기, 쓰기, 실행을 보두 금지 시킬려면, 세번째 숫자를 7(4+2+1)로 바꿔주면 된다.
unix 명령에 chmode가 있는데 이것은 위와 반대이다. 즉, 읽기허용이 4, 쓰기 허용이 2, 실행 허용이 1이다.
(위의 숫자 3개로 0부터 7까지 8진수를 중복없이 모두 표현할 수 있다. 놀랍지 않은가?)

if ( `uname -r` ==  5.5 || `uname -r` == 5.4  ) then 
if then else endif 구문은 c에서와 유사합니다. c shell script에서 유닉스 명령어는 ` `로 둘러 싼다. ('이 아니라 `임에 주의, 즉 키보드에 ~와 같이 있는 그 charactor다.)
unix 명령어 uname은 현재 시스템의 이름을 출력한다. uname -a하면 전체 내용을 보여준다. 3층 전산실에서 uname -a 해보면 SunOS anyon 5.5 Axil-420 sun4m sparc Axil-420임을 볼 수 있다. 이중에서 -r은 시스템의 배포 버전(위에서 5.5에 해당한다.)을 나타낸다. 시스템 버전마다 그 기능이 조금씩 다르고, 인스톨된 프로그램에 차이가 있으므로, 이 버전에 따라 앞으로의 script의 내용이 달라진다. 2층 전산실에 damas 및 몇몇은 시스템이 anyon과 다르다.

    set path = ( $HOME/bin /bin /usr/bin /usr/sbin /usr/ucb )
    set path = ( $path /solar/bin /usr/local/bin /usr/teTeX/bin )
    set path = ( $path /usr/bin/X11 /usr/openwin/bin )
    set path = ( $path /usr/remote/bin /usr/afsws/bin /user/afsws/etc )
    set path = ( $path /usr/ccs/bin /opt/SUNWspro/bin )
    set path = ( $path . )  
path를 지정한다. login시 디폴트 path는 /bin과 /usr/bin이므로, 따로 path를 지정해 주어야 합니다. 위의 예에서 괄호를 사용했음에 주의해야 합니다. 또 위와 달리 한줄에 쫙 써도 되는데, 이때 줄이 넘어 가면 \를 사용해 주어야 합니다.

        setenv LD_LIBRARY_PATH /solar/lib:/solar/X11R5/lib:/usr/lib:/usr/local/l
        setenv SC_LICENSE_FILE /opt/SUNWspro/SunTech_License/license.dat
        setenv MANPATH /usr/man:/solar/local/man:/solar/X11R5/share/man:/opt/SUN
        setenv CLASSPATH /solar/netscape/moz3_0.zip
        setenv LANG ko

여러가지 환경 변수를 선언해 줍니다.환경변수를 참조 하세요.
LD_LIBRARY_PATH는 말그대로 라이브러리가 있는 곳입니다. 컴파일러시 별도의 라이브러리 pass를 지정해 주지 않으면 이 디렉토리에서 찾아 링크 합니다.
SC_LICENSE_FILE은 뭔지 모르겠읍니다.....쩝...
MANPATH는 온라인 메뉴얼의 패스 입니다.
LANG은 사용 언어가 한글입을 나타냅니다. 시스템이 먼저 한글을 지원해야 합니다. (한텀에서 한글을 쓸 수 있는 것과는 다른 이야기 입니다.)

        source $HOME/.alias.solaris
        source $HOME/.alias.han
source 명령은, 새로운 쉘을 실행하지 않고, 현재 쉘로 하여금 쉘 스크립트 화일에 내용을 실행하게 합니다. 위의 예는 홈 디렉토리안에 .alias.solaris 와 .alias.han(알리아스에 관한 내용입니다.) 알리아스를 등록하도록 합니다. .alias.solaris에는 solaris에서만 해당되는 알리아스를 넣어 두었읍니다. .alias.han은 한글 알리아스 명령을 넣었읍니다.(물론 자기 취향에 맞게 다르게 설정해도 되지요)
source 명령은 .cshrc, .login, .fvwmrc등의 화일을 수정한후 그 영향을 테스트 하는 일에도 유용합니다. 로그아웃하고 다시 들어 올 필요 없이, source .cshrc와 같이 하면, .cshrc의 내용을 수행합니다.

setenv HWPDIR /solar/hwpx
setenv HWPSYS /solar/hwpx/sys
setenv XAPPLRESDIR .
setenv NNTPSERVER  141.223.7.47
setenv PRINTER ps4
위의 두 줄은 hwp를 실행하기 위해 필요합니다.
세번째것은 무엇인지 모르겠읍니다.(뭔지 몰라서 그냥 두었읍니다...)
네번째 것은 우리학교 뉴스 서버 어드레스입니다.
마지막것은 3층 전산실 프린터 입니다.


set cdpath = ( ~ )
set filec 
set history = 50
set noclobber
set cdpath = (~ ~/com_physics)
몇가지 쉘 변수를 바꾸어 주었읍니다. 위에 관련되어cshell을 보세요.


stty sane
stty erase '^H'
stty kill '^?'
stty intr '^C'
stty cs8 -parenb -istrip -ixon
터미널 특성을 세팅 합니다. 여기를 보면 다 나와 있읍니다.

source ~/.alias
시스템에 관련 없이 일반적인 내용의 알리아스가 .alias에 있어요.

set prompt = "`hostname`/$user `dirs` {\!}"
alias   cd 'cd \!*;set prompt="`hostname`/$user `dirs` {\!}"'
프롬프트 모양을 설정 합니다.
hostname은 현재 로그인해 있는 호스트의 이름을 알려 줍니다.
$user 은 쉘변수로서 사용자의 user name입니다.
dirs는 현재 디렉토리를 보여 줍니다.
\!는 명령 번호를 나타냅니다.
첫번째 줄은 쉘이 시작될때 필요한 것이고, 이후 디렉토리를 바꿀때마다 prompt 명령을 실행하는 것입니다.(디렉토리가 바뀌니까 매번 실행해야죠.)
자신이 좋아하는 문구를 넣을 수도 있고 색깔을 넣을 수도 있읍니다. 색깔을 넣는 방법에 대해서는 여기를 보세요.




댓글

💲 추천 글