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