1. What is Shell?


Shell 은 단순히 커맨드를 실행하는 매크로 프로세서이다. 매크로 프로세서란 특정 텍스트와 심볼들을 이용해 다양한 표현을 생성하는 기능을 말한다.

UNIX Shell 은 커맨드 인터프리터이자 프로그래밍 언어이다. 커맨드 인터프리터로서의 Shell 은 GNU 유틸리티에 대한 접근을 제공한다. 프로그래밍 언어로서의 Shell 은 그 유틸리티들이 잘 조합될 수 있도록 돕는다. 커맨드들을 포함한 파일들이 생성되고, 파일들을 그 자체로 커맨드가 된다. 이러한 새 커맨드들은 /bin 에 있는 시스템 커맨드와 같은 상태를 가지고, 유저나 그룹이 사용자 정의 환경을 사용해 공통 작업을 수행할 수 있도록 한다.

Shell 은 대화형 모드 또는 비대화형 모드로 사용 가능하다. 대화형 모드에서는 키보드로부터 입력을 받고, 비대화형 모드로 실행시, 파일을 읽어 커맨드를 실행하게 된다.

Shell 은 GNU 커맨드들을 비동기적, 동기적으로 실행 가능하다. Shell 은 추가 입력을 받아들이기 전에 동기적 커맨드가 종료될 때까지 대기한다. 반면 비동기적 커맨드는 병렬적으로 읽는 동시에 추가적인 커맨드를 실행한다. redirection 구조는 해당 커맨드들의 입출력을 세밀하게 조작할 수 있게 해준다. 추가적으로, Shell 은 커맨드들의 환경에