[Linux] TLPI 책 정리 4 - Chapter 2 : Fundamental Concepts (2)

시온·2023년 6월 16일
0

Linux

목록 보기
4/7
post-thumbnail

Fundamental Concepts

이번 챕터에서는 리눅스 시스템 프로그래밍에 대한 다양한 개념이 소개되어 있다.

The Shell

직전 포스팅 내용이 커널에 관한 내용이라면 이번에는 쉘(shell)에 관한 내용이다.

쉘(shell)은 사용자가 친 명령어를 읽고, 그에 따른 적절한 프로그램을 실행하도록 디자인 된 특수한 프로그램이다.

"명령 인터프리터 (command interpreter)" 라고 일컫기도 함.

UNIX 시스템 상에서 쉘은 커널의 한 부분이 아니라, 하나의 사용자 프로세스 (user process) 이다. 그렇기 때문에 다양한 쉘이 존재하며, 사용자들은 하나의 컴퓨터에서 동시에 여러 종류의 쉘을 사용할 수 있다.

  • Bourne shell (sh)
    가장 널리 쓰이는 쉘 중이 가장 오래된 버전. Steve Bourne에 의해 작성되었다. I/O redirection, pipelines, filename generation, variables, 환경변수, 백그라운드 실행, 함수 등을 제공한다.

  • C shell (csh)
    Bill Joy에 의해 작성되었다. C의 control-flow와 비슷한 제어 구조를 가지고 있는 쉘이다. command history, command-line editing, alias 등을 제공한다.

  • Korn shell (ksh)
    Bourne shell의 계승판 느낌. David Korn에 의해 작성되었다. Bourne shell의 호환성을 유지하면서 C shell의 기능과 유사한 기능을 합쳤다.

  • Bourne again shell (bash)
    GNU project의 Bourne shell 재구현작. C와 Korn shell의 기능들을 제공하며 Linux에서 가장 널리 쓰이는 쉘이 되었다. (리눅스에서 sh 인 것은 사실은 bash 이며, 최대한 sh에 가깝게 구현되었다.)

이러한 쉘 들은 컴퓨터와 사용자의 상호작용 용도로만 디자인 된 것이 아니라, 쉘 스크립트(shell script) 라는 텍스트 파일 역시 읽어들여 동작하게 디자인 되었다. 이러한 목적 때문에, 각 쉘에는 변수, 루프 및 조건문, I/O 명령 및 함수와 같이 일반적으로 프로그래밍 언어와 관련된 기능이 존재한다.

profile
끊임없이 성장중

0개의 댓글