톰프슨 셸(Thompson shell, 톰슨 셸)은 1971년 최초 버전의 유닉스에 도입된 최초의 유닉스 셸로서, 켄 톰프슨이 작성하였다.[1] 스크립팅을 위해 설계되지 않은 단순한 명령 인터프린터였으나 그럼에도 불구하고 명령 줄 인터페이스의 여러 혁신적인 기능들을 도입함으로써 차기 유닉스 셸의 개발로 이어지게 되었다.

역사 편집

명령 줄 인터프리터의 셸(shell)이라는 이름과 셸을 운영 체제 커널 밖의 사용자 프로그램으로 만든다는 개념은 유닉스의 선구자 멀틱스에 도입되었다.

톰프슨 셸의 초기 기능은 입출력 리다이렉션을 위한 간략한 문법이었다. 멀틱스에서 명령의 입출력을 리다이렉트하는 일에는 리다이렉션을 시작하고 중단하기 위한 별도의 프로그램이 필요하였다. 유닉스에서는 < 심볼로 이루어진 명령 줄에 인수를 간단히 추가하고 이어서 입력을 위한 파일명이나 출력을 위한 > 심볼을 넣으면 셸은 해당 명령의 실행 중에 입출력을 리다이렉트해준다. 이러한 문법은 이미 1971년 최초 버전의 유닉스 릴리스에 존재하였다.

나중에는 파이프라는 개념이 추가되었다. 더글러스 매클로이의 제안대로 리다이렉션 문법이 확장됨으로써 한 명령의 출력이 다른 명령의 입력으로 전달될 수 있었다. 버전 3 매뉴얼에 기술된 원래의 파이프 문법은 다음과 같았다:

명령1 >명령2>

이 문법을 너무 모호한 것으로 입증되어 파일로 향하는 리다이렉션과 파일로부터 오는 리다이렉션 간에 쉽게 혼동되어 시스템은 "명령2"가 명령 "명령2"인지 파일 "명령2"인지 구별할 수 없다. 버전 4에서 이 문법은 | 및 ^ 기호를 둘 다 사용하여 파이프를 지시하도록 변경되었다:

명령1 | 명령2

이는 정확히 다음과 동일한 결과이다:

명령1 ^ 명령2

이 > 심볼은 다음과 같이 변경되었다:

command1 > file1

이렇게 하면 명령1의 출력은 파일1에 추가된다.

< 및 >를 사용한 리다이렉션, 그리고 |를 사용한 파이프의 톰프슨 셸 문법은 견고한 것으로 입증되어 다른 대부분의 유닉스 셸과 일부 다른 운영 체제의 셸(특히 도스, OS/2, 마이크로소프트 윈도우)에 채택되었다.

같이 보기 편집

각주 편집

  1. J. R. Mashey (1976년 10월 13일). “Using a Command Language as a High-Level Programming Language”. Proceedings of the 2nd International Conference on Software Engineering: 169–176. 

외부 링크 편집