0 views
1. 개요
- 사용자가 입력한 명령어를 해석하여 커널에 전달하고, 그 결과를 다시 사용자에게 보여주는 명령어 해석기이다.
- 커널을 감싸고 있는 껍데기라는 의미에서 'Shell'이라 불린다.
2. 동작 원리 및 종류
- 쉘은 단순히 검은 화면에 글씨를 띄우는 것이 아니다.
- 사용자의 입력을 파싱하고, 특수 문자를 확장한 뒤, 실행 파일의 위치를 찾아 메모리에 로드하는 복잡한 프로세스를 수행한다.
2.1. 쉘의 계보 (Family Tree)
- 리눅스 쉘은 크게 Bourne 계열과 C 계열로 나뉜다.
| 계열 | 쉘 이름 | 특징 및 용도 |
|---|---|---|
| Bourne | sh (Bourne Shell) | 모든 쉘의 조상. 기능이 적지만 모든 유닉스 시스템에 존재함 (표준). |
| Bourne | bash (Bourne Again Shell) | 리눅스 표준. sh의 확장판으로 가장 널리 사용됨. 강력한 스크립팅 기능 제공. |
| Bourne | zsh (Z Shell) | macOS 기본 쉘. Bash의 기능에 편의성(자동완성, 테마)을 대폭 강화함. |
| Bourne | dash (Debian Almquist Shell) | 우분투/데비안의 /bin/sh 구현체. 기능은 적지만 속도가 매우 빨라 부팅 스크립트용으로 쓰임. |
| C | csh / tcsh | C언어와 문법이 유사함. 과거 BSD 계열에서 인기 있었으나 현재는 스크립트용으로 비추천. |
| Other | fish (Friendly Interactive Shell) | 설정 없이도 강력한 자동완성과 하이라이팅 지원. 문법이 독자적이라 Bash와 호환되지 않음. |
2.2. 주요 쉘 상세 분석
- Bash (Bourne Again Shell)
- 위상:
- 리눅스 배포판의 90% 이상이 기본 쉘로 채택하고 있다.
- 특징:
- 명령어 히스토리, 별칭(Alias), 작업 제어(Job Control) 등 대화형 기능과 프로그래밍 기능을 모두 갖췄다.
- 내부 동작:
/bin/bash로 실행되며, 시작 시.bashrc,.profile등의 설정 파일을 순차적으로 읽어 환경을 구성한다.
- 위상:
- Zsh (Z Shell)
- 위상:
- 개발자 및 파워 유저들이 가장 선호하는 쉘. (Oh My Zsh 플러그인 생태계 덕분)
- 특징:
- Bash와 거의 완벽하게 호환되면서도, 철자 교정, 경로 자동 추론, 강력한 플러그인 시스템을 제공한다.
- 위상:
- Dash
- 위상:
- 시스템 부팅 및 스크립트 실행 전용.
- 특징:
- 대화형 기능(편의성)을 제거하고 실행 속도와 메모리 효율을 극대화했다.
sh명령어를 쳤을 때 실제로는 심볼릭 링크를 통해dash가 실행되는 경우가 많다.
- 위상:
3. 사용법 및 구문 (Syntax)
3.1. 현재 쉘 확인 및 변경
-
내가 지금 어떤 쉘을 쓰고 있는지, 시스템에서 사용 가능한 쉘은 무엇인지 확인한다.
# 사용 가능한 쉘 목록 확인 cat /etc/shells # 현재 사용 중인 쉘 확인 echo $SHELL # 기본 쉘 변경 (로그아웃 후 재로그인 시 적용) # chsh -s [쉘 경로] chsh -s /bin/zsh
3.2. 문법 차이 예시 (Bash vs Csh)
-
쉘 스크립트 작성 시 문법 차이가 크므로 주의해야 한다. (대부분 Bash 문법을 따른다)
-
변수 설정
# [Bash/Zsh] export NAME="Gemini" # [Csh/Tcsh] setenv NAME "Gemini" -
반복문
# [Bash/Zsh] for i in {1..5}; do echo "Number: $i" done
Loading comments...