리눅스 쉘 종류

Linux

0 views

1. 개요

  • 사용자가 입력한 명령어를 해석하여 커널에 전달하고, 그 결과를 다시 사용자에게 보여주는 명령어 해석기이다.
    • 커널을 감싸고 있는 껍데기라는 의미에서 'Shell'이라 불린다.

2. 동작 원리 및 종류

  • 쉘은 단순히 검은 화면에 글씨를 띄우는 것이 아니다.
    • 사용자의 입력을 파싱하고, 특수 문자를 확장한 뒤, 실행 파일의 위치를 찾아 메모리에 로드하는 복잡한 프로세스를 수행한다.

2.1. 쉘의 계보 (Family Tree)

  • 리눅스 쉘은 크게 Bourne 계열과 C 계열로 나뉜다.
계열쉘 이름특징 및 용도
Bournesh (Bourne Shell)모든 쉘의 조상. 기능이 적지만 모든 유닉스 시스템에 존재함 (표준).
Bournebash (Bourne Again Shell)리눅스 표준. sh의 확장판으로 가장 널리 사용됨. 강력한 스크립팅 기능 제공.
Bournezsh (Z Shell)macOS 기본 쉘. Bash의 기능에 편의성(자동완성, 테마)을 대폭 강화함.
Bournedash (Debian Almquist Shell)우분투/데비안의 /bin/sh 구현체. 기능은 적지만 속도가 매우 빨라 부팅 스크립트용으로 쓰임.
Ccsh / tcshC언어와 문법이 유사함. 과거 BSD 계열에서 인기 있었으나 현재는 스크립트용으로 비추천.
Otherfish (Friendly Interactive Shell)설정 없이도 강력한 자동완성과 하이라이팅 지원. 문법이 독자적이라 Bash와 호환되지 않음.

2.2. 주요 쉘 상세 분석

  1. Bash (Bourne Again Shell)
    • 위상:
      • 리눅스 배포판의 90% 이상이 기본 쉘로 채택하고 있다.
    • 특징:
      • 명령어 히스토리, 별칭(Alias), 작업 제어(Job Control) 등 대화형 기능과 프로그래밍 기능을 모두 갖췄다.
    • 내부 동작:
      • /bin/bash로 실행되며, 시작 시 .bashrc.profile 등의 설정 파일을 순차적으로 읽어 환경을 구성한다.
  2. Zsh (Z Shell)
    • 위상:
      • 개발자 및 파워 유저들이 가장 선호하는 쉘. (Oh My Zsh 플러그인 생태계 덕분)
    • 특징:
      • Bash와 거의 완벽하게 호환되면서도, 철자 교정, 경로 자동 추론, 강력한 플러그인 시스템을 제공한다.
  3. 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...