1. 역할
- 사용자와 운영체제 사이에서 창구 역할을 하는 소프트웨어
- 명령어 처리기로서 사용자로부터 명령어를 입력받아 이를 처리한다.
2. 종류
- 본 쉘 (Bourne Shell) : /bin/sh
- 벨 연구소의 스티븐 본(Steven Bourne)에 의해 개발
- 유닉스에서 기본 쉘로 사용된다.
- 콘 쉘 (Korn Shell) : /bin/ksh
- 1980년대에 벨 연구소에서 본 쉘을 확장하여 만듦
- Bash 쉘 (Bourne again Shell) : /bin/bash
- GNU에서 본 쉘을 확장하여 개발한 쉘
- 리눅스, 맥 OS X에서 기본 쉘로 사용되면서 널리 보급되었다.
- 명령어의 구문은 본 쉘 명령어 구문을 확장하였다.
- C 쉘 (C Shell) : /bin/csh
- 버클리 대학의 빌 조이(Bill Joy)에 의해 개발
- 쉘의 핵심 기능에 C 언어의 특징을 더했다.
- BSD 계열의 유닉스에서 많이 사용된다.
- 최근에는 이를 개선한 tcsh이 개발되어 사용되고 있다. (/bin/tcsh)
3. 로그인 쉘
- 로그인하면 자동으로 실행되는 쉘
- 일반적으로 시스템 관리자가 계정을 만들 때 로그인 쉘을 지정한다.
4. 주요 기능
- 명령어 처리 : 사용자가 입력한 명령을 해석하고 적절한 작업을 수행
- 시작 파일 : 로그인할 때 실행되어 사용자 별로 맞춤형 사용 환경을 제공
- 스크립트 : 쉘 자체의 프로그래밍 기능
5. 실행 과정
- 시작 파일을 읽고 실행 > 프롬프트를 출력하고 사용자 명령을 기다린다. (대기) > 사용자 명령 실행
- 대기와 실행 과정을 반복 수행
- Ctrl + D 를 누르면 종료
6. 시작 파일
- 시작 파일 : 쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일로서 주로 사용자 환경을 설정하는 역할을 하며, 이를 위해 환경 변수에 적절한 값을 설정한다.
- 시스템 시작 파일 : 시스템의 모든 사용자에게 적용되는 공통 설정 (환경 변수 설정, 명령어 경로 설정, 메시지 출력 등…)
- 사용자 시작 파일 : 사용자의 홈 디렉터리에 있으며 각 사용자마다 따로 적용되는 설정 (환경 변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이명(alias) 설정 등…)
7. 전면 처리, 후면 처리
- 전면 처리 : 입력된 명령어를 foreground로 실행하고 쉘은 명령어 실행이 끝날 때까지 기다린다.
- 후면 처리 : 명령어를 background로 실행하고 전면에서는 다른 작업을 실행하여 동시에 여러 작업을 수행할 수 있다.
8. 쉘과 프로세스
- 쉘의 명령어 처리 과정
- 쉘 프로세스와 자식 프로세스