Shell

Sep 18, 2019


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. 주요 기능

  • 명령어 처리 : 사용자가 입력한 명령을 해석하고 적절한 작업을 수행
  • 시작 파일 : 로그인할 때 실행되어 사용자 별로 맞춤형 사용 환경을 제공
  • 스크립트 : 쉘 자체의 프로그래밍 기능
  • functions of shell

5. 실행 과정

  • 시작 파일을 읽고 실행 > 프롬프트를 출력하고 사용자 명령을 기다린다. (대기) > 사용자 명령 실행
    • 대기와 실행 과정을 반복 수행
    • Ctrl + D 를 누르면 종료

6. 시작 파일

  • 시작 파일 : 쉘마다 시작될 때 자동으로 실행되는 고유의 시작 파일로서 주로 사용자 환경을 설정하는 역할을 하며, 이를 위해 환경 변수에 적절한 값을 설정한다.
  • 시스템 시작 파일 : 시스템의 모든 사용자에게 적용되는 공통 설정 (환경 변수 설정, 명령어 경로 설정, 메시지 출력 등…)
  • 사용자 시작 파일 : 사용자의 홈 디렉터리에 있으며 각 사용자마다 따로 적용되는 설정 (환경 변수 설정, 프롬프트 설정, 명령어 경로 설정, 명령어 이명(alias) 설정 등…)
  • start-up file

7. 전면 처리, 후면 처리

  • 전면 처리 : 입력된 명령어를 foreground로 실행하고 쉘은 명령어 실행이 끝날 때까지 기다린다.
  • 후면 처리 : 명령어를 background로 실행하고 전면에서는 다른 작업을 실행하여 동시에 여러 작업을 수행할 수 있다.

8. 쉘과 프로세스

  • 쉘의 명령어 처리 과정
    • 쉘의 명령어 처리 과정
  • 쉘 프로세스와 자식 프로세스
    • 쉘 프로세스와 자식 프로세스