Post

오토에버 클라우드 2기 12일차

오토에버 클라우드 2기 12일차

셀의 종류에는 여러가지가 존재한다

Bourne Shell (sh)

  • 최초의 셸
  • 간단한 스크립트 작성 가능
  • 현재는 Korn Shell(ksh)이나 Bash Shell(bash)의 심볼릭 링크로 사용됨
  • 리다이렉션과 파이프 기능 지원

C Shell (csh)

  • Bourne Shell과 호환되지 않음
  • C 언어 스타일의 문법을 적용하여 사용자가 쉽게 적응 가능
  • 이력(history) 기능 제공 → 이전에 실행한 명령어를 다시 사용할 수 있음
  • 별칭(alias) 기능 지원
  • 기본적인 스크립트 작성 가능

Korn Shell (ksh)

  • Bourne Shell과 호환성을 유지하면서 기능을 확장
  • 스크립트 작성 능력이 강력하며 시스템 관리에 유용
  • 명령 이력(history) 및 작업 제어 기능 향상
  • 우분투 기본 설치 ❌ → 별도 설치 필요

Bash Shell (bash)

  • Bourne Shell을 기반으로 개발된 셸
  • C Shell과 Korn Shell의 장점을 통합
  • 명령어 자동 완성 기능 지원
  • 스크립트 디버깅 기능 제공
  • GPL을 따르는 공개 소프트웨어
  • 리눅스에서 기본 셸로 제공됨
  • 우분투에서는 사용자 계정의 기본 셸로 사용됨
  • 브레이스 확장(Brace Expansion)과 명령 치환(Command Substitution) 기능 제공

Dash Shell (dash)

  • Bourne Shell을 기반으로 개발된 가벼운 셸
  • 빠른 실행 속도 제공
  • 우분투 6.10 버전부터 기본 셸로 채택됨
  • Bash보다 가벼워 부팅 속도를 향상시킴
  • 스크립트 실행에 최적화됨 (대형 시스템보다 단순한 작업에 적합)

 

현재 시스템 쉘 확인 명령어 ls -l /bin/sh

/etc/passwd에 나오는 “BASH”는 당신 사용자 계정(master1)의 로그인 셸(Login Shell) 이 /bin/bash로 설정되어 있다는 뜻이고, ls -l /bin/sh의 “DASH”는 시스템에서 /bin/sh라는 이름으로 설치된 디폴트 셸(Default Shell) 이 실제로는 Dash의 심볼릭 링크라는 뜻이다

 

서로 다른 이유

로그인 셸(login shell) (/etc/passwd 마지막 필드)

사용자가 터미널에 로그인하거나 su - 로 전환할 때 자동으로 실행되는 셸

보통 chsh 명령으로 변경 가능

grep master1 /etc/passwd 결과 끝에 /bin/bash가 붙어 있다면, master1 계정의 로그인 셸이 bash라는 의미

 

/bin/sh

고전적으로 “표준 셸”로 스크립트들의 해석기(Interpreter) 역할을 해 왔던 이름

현대 리눅스 배포판(특히 Debian 계열)에서는 속도와 크기 때문에 Bash 대신 Dash를 /bin/sh로 심볼릭 링크

ls -l /bin/sh 해 보면 /bin/sh -> dash 같은 형태로 보이기 때문에, /bin/sh로 실행되는 스크립트는 실제로 Dash가 해석

 

따라서 로그인 셸으로 Bash를 쓰면, 풍부한 기능(프롬프트 커스터마이징, 히스토리 검색, 확장 등)을 편리하게 쓸 수 있음 하지만 시스템 스크립트들은 /bin/sh로 시작하게 작성해 두고, 이걸 경량화된 Dash가 처리하도록 하면 부팅 스크립트나 패키지 설치 스크립트가 더 빠르게 실행되고 메모리 사용도 줄어드는 장점이 있다

 

This post is licensed under CC BY 4.0 by the author.