(Bash에서 넘어옴)

Shell

1 개요

운영체제에서 커널과 이용자 사이에 끼어서 이용자의 명령을 해석하고 그 처리 결과를 뿌려주는 시스템 프로그램.

셸은 흔히 두 종류로 구분하는데, 명령 줄 셸과 그래픽 셸이다. 전자는 CLI이고 후자는 GUI라 부른다.

그 외에도 이 환경으로 접속하는 보안접속 프로그램(SSH; Secure SHell)을 일컫는 말이기도 하다.

2 유닉스 계열 운영체제의 셸

최초의 셸은 AT&T 에서 개발한 본셸(Bourne shell, sh)이며, 이를 개선한 C셸(csh), 콘셸(ksh) 등이 만들어 졌다.

최초의 셸이 언제 어디서 누구에 의해 만들어진 무엇인가에 대해서는 알 수 없으나, 본격적으로 최초의 셸다운 유닉스 셸로 알려진 것은 1979년말 V7 유닉스(AT&T의 7번째 유닉스)에 탑재된 셸이다. 제작자인 Stephan Bourne의 이름을 따 본셸이라 부르며, Algol로 짜여젔다. 이 셸은 단순하고 속도가 빨랐으나, 어디까지나 귀중하신 컴퓨터님의 작업을 인간이 느리게 하지 않기 위한 목적 만을 가지고 있어서, 대단히 불친절했다. 주로 시스템 관리 작업의 자동화 이외의 일을 하기는 대단한 인내심과 컴퓨터님에 대한 복종심 없이는 거의 불가능하였다. 그래서 사용자 친화적으로 나온 것이 바로 Bash Shell. 자유 소프트웨어 재단의 Brian Fox가 개발하였으며, 자유 소프트웨어 재단의 물건 답게 주요 리눅스 시스템의 기본 쉘로 쓰이고 있다.
1970년대말에는 다른 쉘들도 등장하였는데, 캘리포니아의 버클리 대학교의 Bill Joy가 C언어로 C쉘을 개발하였다. 그러나 기본적으로 C쉘은 대형컴퓨터용이였으며, 본쉘보다도 느렸기 때문에 속도 측면에서 그다지 좋지 못한 평가를 받았다.
AT&T의 David Korn은 1988년 유닉스 SVR4 배포판에 콘쉘을 탑재하여 처음으로 배포한다.
Paul Falsted는 Z셸을 만들었다.

요즘에는 sh 를 환골탈태시켜 새로 만든 bash[1]그냥 깔려있으니까대중적으로 많이 사용하며, 리눅스를 메인으로 사용하거나 셸에 더 많은 기능이 필요한 사람들은 zsh[2]를 많이 사용하는 편이다.

2.1 셸 스크립트

유닉스 계열 운영체제의 많은 셸들이 셸 스크립트를 사용하여 프로그래밍이 가능 하다. 이를 사용하여 운영체제의 명령 뿐만 아니라 응용프로그램들을 실행하여 많은 작업을 자동화 할 수 있다. GUI가 각 프로그램들을 조합하여 자동화 하기 매우 힘든 데 비해 CUI의 장점이 빛나는 부분. 유닉스 계열의 운영체제는 본래 확장자를 엄격하게 구분하지 않기에 확장자가 없거나 다르게 되어 있는 셸 스크립트 파일도 많지만, 보통 셸 스크립트의 파일은 .sh라는 확장자를 갖는 다.

2.2 주요 셸 목록

3 윈도의 셸

윈도에는 Windows 탐색기(EXPLORER.EXE)라는 GUI 환경의 셸이 있다. 작업표시줄과 시작 메뉴, 바탕화면 및 아이콘, 파일 탐색기를 제공한다.

CUI 환경으로 명령 프롬프트, 윈도 파워 셸, bash[3]가 있다. 다만 이들은 일단 운영체제가 기동되고 GUI환경의 셸(Windows 탐색기)가 실행된 이후 일종의 응용 프로그램처럼 실행된다.

3.1 배치 파일

Batch File.

윈도 명령 프롬프트를 위한 스크립트 언어. GUI이므로 자동화가 곤란한 Windows 탐색기를 대신하여 CUI 환경인 명령 프롬프트에서 자동화 작업을 수행할 수 있도록 해 준다.[4]

확장자MS-DOS 시절부터 내려오는 .bat명령 프롬프트 고유의 .cmd가 있다. 아직도 .bat 확장자가 널리 쓰인다.

4 기타 운영체제

  • MS-DOS - command.com 이 셸 역할을 수행한다. 윈도명령 프롬프트는 command.com으로부터 명령어 형식을 비롯하여 많은 것을 물려받았다. 단, command.com과 명령 프롬프트 사이의 직접적인 관련은 없다.
  1. 정식 명칭은 Bourne Again shell 이며, '배쉬'라고 부른다.
  2. 보통 oh-my-zsh와 함께 사용한다.
  3. 윈도 10에서 지원된다.
  4. 물론 CUI 응용프로그램 한정.