1993.1.3

SUBJECT: UNIX의 Shell

DESCRIPTION:
0. Shell이란 ?
   * 원래 shell이란 단어는 '(조개) 껍질'이란 의미이다.
     shell이란?  단어 의미 그대로 연상하면 된다.
     한 사용자를 다른 사용자로부터 보호하며,
     사용자에게 편리한 환경을 제공하는 단단한 보호막(껍질)인 것이다.
   * 사용자와 OS 즉 kernel간에 interface를 제공하는 특별한 utility이다.
     shell은 kernel과 협력하여
     사용자가 utility나 사용자 프로그램을 실행할 수 있도록 도와준다. 
   * shell을 단순하게 말하자면,
     login시 or 새 window를 띄웠을 때
     사용자를 위해 시작되는 특별한 utility라고 하겠다.
   * shell이 'kernel 내부에 심어져 있지 않다'는 점은
     '다양성'이란 이름으로 UNIX를 다른 많은 OS와 구별해 주게 되었다.
     shell을 분리시켜 줌으로 인해 default shell 이외에도
     여러 shell들이 만들어질 수 있었고,
     사용자들에겐 이 여러 shell들을 선택적으로 사용할 수 있는 기회가 주어졌다.
     물론 능력이 된다면 새로운 shell을 스스로 만들어 사용할 수도 있다.

1. Shell의 기능
   * shell은 읽어들인 command를 해석(interpret)하여 필요한 작업을 하게 하며.
     이에 따른 입출력을 통제한다.
   * 이들 command들은 prompt상의 shell에서 직접 typing될 수도 있고,
     shell에 의해 file에서 읽어들일 수도 있다.
     이 때 shell command를 포함하는 file을
     "shell program" = "shell script" = "shell procedure"라고 한다.
   * shell의 기능을 요약하자면,
     1) user interface로서의 command interpreter
     2) programming language
  
2. Shell의 요모 조모
   * 위에서 shell이 interpreter된다고 하였는데
     이는 command를 하나씩 읽고 실행하는 것으로
     만약 error가 발생한다면 실행을 중단할 수도 있다는 의미.
     동일한 내용을 C language로 짜 컴파일한 프로그램에 비해선
     shell중 빠르다고 하는 Bourne shell도 그 수행 속도를 따라가지 못한다.
   * 그러나 programming language로서의 shell program을 잘 활용하면
     여러 분야에서 '생산성'을 높일 수 있다.
     거대한 text 화일에서 동일 작업을 라인마다 한다던가
     여러 화일에서 반복적인 일을 한다던가
     반복적인 일을 하루에도 몇 번씩 한다던가
     편집을 요하는 일을 자동화한다던가 등등.
     물론 C language로도 같은 프로그래밍을 할 수 있지만, 
     이에 비해 shell은 프로그래밍이 훨씬 간편하다.
   * shell이 실행하는 프로그램 즉, process에는 기본적으로 
     세 개(?)의 file이 open된다.
     standard in(표준 입력), standard out(표준 출력), standard error(표준 에러)


Revision History
Created        on Jan. 3 ,1993