codingstairs
노트에듀라이프연락
⌕검색⌘K
koen

Navigation

  • Intro
  • Blog
  • Life

연락하기

로그인 없이도 보낼 수 있어요. 답변이 필요하면 이메일을 함께 적어 주세요.

  • 익명 폼으로 의견 남기기 →
  • ✉ warragon112@gmail.com
  • 카카오톡 오픈채팅 ↗

© 2026 codingstairs

  • 노트
  • 에듀
  • 검색
  • 라이프
  • 연락
  • 약관
  • RSS
  • GitHub
노트›environment

셸의 종류와 계보

2026-04-28 게시· 2026-05-18 갱신·0회 조회

셸의 종류와 계보

셸 (shell) 은 사용자의 입력을 해석해 운영체제에 전달하는 인터프리터입니다. 같은 운영체제 위에서도 여러 셸을 골라 쓸 수 있고, 셸마다 문법과 기능이 조금씩 다릅니다.

1. 셸에 대한 이야기

운영체제 커널은 시스템 호출 (system call) 을 통해 동작합니다. 일반 사용자가 매번 시스템 호출을 직접 부르기는 번거로우므로, 명령어를 입력받아 프로그램을 실행해 주는 중간 계층이 필요합니다. 그 역할을 하는 프로그램이 셸.

셸은 대화형 (REPL) 으로도 쓰이고, 스크립트 파일로 일괄 실행되기도 합니다. 둘 다 같은 인터프리터가 처리.

2. Unix 계보

Unix 셸의 계보는 1971 년의 Thompson shell 까지 거슬러 올라갑니다.

셸 출시 특징
sh (Bourne shell) 1977 Stephen Bourne. Unix V7 의 표준. POSIX sh 의 기준.
csh 1978 Bill Joy. C 문법을 닮음. 스크립팅에는 함정.
ksh (KornShell) 1983 David Korn. csh 의 대화 기능과 sh 의 문법 결합.
bash 1989 Brian Fox. GNU 프로젝트의 sh 호환. Linux 의 사실상 기본.
zsh 1990 Paul Falstad. ksh/bash 호환 + 강력한 자동완성. macOS 10.15+ 기본.
fish 2005 "Friendly Interactive Shell". POSIX 비호환 의도적.

Linux 배포판은 보통 bash 를 사용자 셸로 두고, /bin/sh 는 dash (Debian Almquist Shell) 같은 가벼운 POSIX sh 로 연결.

3. POSIX 표준의 위치

POSIX (Portable Operating System Interface) 는 IEEE 가 1988 년부터 표준화한 Unix 계열 OS 인터페이스 규격. 그 일부로 셸 명령 언어 (POSIX sh) 가 정의돼 있습니다.

bash · zsh · ksh 같은 현대 셸은 POSIX sh 의 상위 집합. POSIX sh 로 작성한 스크립트는 대체로 어디서든 동작하지만, bash 전용 확장 ([[ ]] · 배열) 은 dash 같은 엄격한 sh 에서 깨집니다. #!/bin/sh 로 시작하는 스크립트는 POSIX 범위 안에 머무는 편이 안전.

4. Windows 계보

셸 출시 특징
COMMAND.COM 1981 (MS-DOS 1.0) DOS 시절의 16비트 명령 처리기.
cmd.exe 1993 (Windows NT 3.1) NT 계열의 32/64비트. .bat/.cmd 실행.
Windows PowerShell 2006 .NET Framework 기반. 객체 지향 셸. Windows 7+ 기본.
PowerShell 7+ 2020 .NET Core (이후 .NET 5+) 기반. 크로스플랫폼.

PowerShell 의 명령 단위는 cmdlet — Verb-Noun 명명 (Get-Process · Set-Item).

5. 객체 파이프 vs 텍스트 파이프

bash 계열의 파이프 | 는 표준출력의 텍스트 바이트를 다음 명령의 표준입력으로 흘려보냅니다.

ps -ef | grep node | awk '{print $2}'

PowerShell 의 파이프는 .NET 객체를 흘려보냅니다. 다음 단계는 객체의 속성에 직접 접근:

Get-Process | Where-Object { $_.Name -eq "node" } | Select-Object -ExpandProperty Id

두 모델은 표현력의 결이 다릅니다. 텍스트 파이프는 어떤 도구든 결합하기 쉽고 이식성이 높음. 객체 파이프는 구조화된 데이터에서 안전하고 정확.

6. 어디서 무엇이 기본인가

  • macOS 10.15+ — zsh.
  • macOS 10.14- — bash 3.2 (Apple 이 GPLv3 회피로 업그레이드 중단).
  • 대부분의 Linux — 사용자 셸 bash, /bin/sh 는 dash 또는 bash 의 sh 모드.
  • Windows 10/11 — PowerShell + cmd.exe. Windows Terminal 이 호스트.
  • WSL2 — 내부는 일반 Linux 와 동일.

7. 대화형 vs 스크립트

셸은 두 가지 얼굴:

  • 대화형 (interactive) — 사람이 직접 명령을 치는 환경. 자동완성·히스토리·프롬프트·테마.
  • 비대화형 (스크립트) — 파일에 적힌 명령을 일괄 실행. 안정성·이식성·에러 처리.

zsh 와 fish 는 대화형 편의에 강점, bash 와 dash 는 스크립트 호환성에 강점. 사용자가 zsh 로 평소에 일하면서 자동화 스크립트는 bash 로 적는 조합이 흔합니다.

8. 셸을 바꾸는 법

작업 macOS/Linux Windows
사용 가능한 셸 목록 cat /etc/shells (Windows Terminal 프로필)
기본 셸 변경 chsh -s /bin/zsh Windows Terminal 설정 default profile
현재 셸 확인 echo $SHELL $PSVersionTable.PSVersion (PowerShell)

9. 자주 걸리는 자리

bash 전용 문법 ([[ · 배열 · <<<) 을 #!/bin/sh 스크립트에 적은 경우 — dash 환경에서 깨짐.

macOS 의 bash 가 3.2 라 최신 bash 4/5 의 연관 배열 · mapfile 같은 기능을 못 쓰는 경우 — Homebrew 로 새 bash 를 설치해 #!/usr/bin/env bash 로 우회.

PowerShell 5.1 와 7+ 의 차이 — 5.1 은 && · || 가 없고 객체 출력이 다른 부분.

fish 는 POSIX 비호환 — 다른 셸 스크립트가 그대로 돌지 않습니다. fish 사용자가 bash 스크립트를 실행할 때는 bash script.sh 로 인터프리터를 명시.

하고픈 말

셸 선택은 대화형 편의 (zsh · fish) 와 스크립트 호환성 (bash · dash) 의 두 자리에서 결정됩니다. 두 셸을 함께 쓰는 모양 — 평소는 zsh, 자동화는 #!/usr/bin/env bash — 이 가장 자주 보이는 운영 결.

Next

  • bash-and-sh
  • powershell-basics

GNU Bash Manual · zsh 문서 · POSIX Shell (IEEE 1003.1) · Microsoft PowerShell · Wikipedia 셸 비교 를 참고합니다.

environment 카테고리의 다른 글

카테고리 전체 보기 →
  • WSL2 — Windows 위의 Linux
  • 데이터 포맷 — JSON · YAML · TOML · XML
  • 터미널 첫날
  • 텍스트 인코딩과 줄바꿈
  • Markdown
  • 크로스 플랫폼 스크립트