오토에버 클라우드 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가 처리하도록 하면 부팅 스크립트나 패키지 설치 스크립트가 더 빠르게 실행되고 메모리 사용도 줄어드는 장점이 있다