다음 이전 차례

6. Shells

사용자 프로세스들은 /etc/passwd 에 정해진 쉘의 자식프로세스인 경우가 많으며 대게 쉘의 초기화 파일에 의해서 path는 수정되어지는 경우가 많다. login 프로그램에서는 쉘의 이름앞에 '-' 가 붙는다. 예를들어 bash는 '-bash'라고 불려진다. 이 표시는 그것이 로그인 쉘임을 불려지는 쉘에게 알린다. 이 경우에 쉘은 로그인 초기화 파일을 수행하게 된다. 로그인 쉘이 아닐경우에는 간단한 초기화가 이루어진다.

추가적으로, 쉘이 상호 대화식쉘인지 즉, 명령어가 파일로부터 입력이 되는 지 tty에서 입력이 되는지 체크를 하는데 이것은 쉘의 초기화를 수정하게 되 며 그래서 대화식 쉘이 아니고 로그인 쉘도 아니라면 초기화는 아주 간단하게 이루어진다.(bash는 이경우에는 아무런 초기화도 하지 않는다!)

6.1 bash

전형적인 로그인 쉘로서 bash는 시스템전반에 걸쳐 쓰이는 /etc/profile 파 일을 참조한다. 여기에는 시스템 환경과 path가 bash 사용자를 위해 설정되 어 질 수 있다.

그러나 시스템이 대화식 쉘이 아니라고 판단하게 되면 이 파일은 읽혀지지 않는다. 중요한 경우로 리모트에서 명령어가 실행되는 rsh 가 있는데 이 경우 /etc/profile은 읽혀지지 않고 path는 rsh 데몬에게서 상속되어진다.

bash는 명령 인수 -login과 -i 로써 로그인 쉘인지 아닌지 와 대화형 쉘인 지 아닌지를 정할 수 있다. 사용자는 홈디렉토리에  /.bash_profile,  /.bash_login 또는  /.profile 파일을 만들어서 /etc/profile 에 정해진 값을 수정할 수 있다. 주의할 것은 csh의 초기화 과정과는 다르게 이 파일중 처음것만 실행된다는 것이다.  /.bash_login 은 로그인 쉘일 경우 실행되지 않으며  /.bash_profile 이 있다면  /.bash_login은 전혀 실행안된다!!

만약 bash가 sh 란 이름으로 사용되어진다면 bash는 오리지날 본쉘의 초 기화를 에뮬레이트한다. 즉, /etc/profile,  /.profile 과 로그인 쉘의 초기 화만 따른다.

6.2 tcsh

tcsh 가 로그인 쉘이면 tcsh 는 다음 순서로 파일들을 수행한다.


   /etc/csh.cshrc
   /etc/csh.login
   ~/.tcshrc
   ~/.cshrc (.tcshrc 가 없는경우)
   ~/.history
   ~/.login
   ~/.cshdirs

tcsh는 cshrc 스크립트 전에 login 스크립트를 먼저 수행하도록 컴파일할수 도 있다. 알아두어라!

대화형 쉘이 아닐경우에는 단지 *cshrc스크립트만 실행된다. *login 스크 립트는 path를 지정하기 위해 로그인 시에 한번 사용된다.


다음 이전 차례