Apple 이 갈아탄 진짜 이유 — license
Bash 4.0 (2009) 은 GPLv3 로 출시됐어. Apple 변호사들이 GPLv3 를 안 좋아해 (특허 / anti-tivoization 조항을 OS 벤더 입장에서 위험하다고 봄). 그래서 macOS 의 bash 는 GPLv2 마지막 버전인 3.2 에서 십 년 넘게 멈춰 있었어. 2019 년에는 12 년 묵은 bash 였지. macOS Catalina 는 default login shell 을 zsh (MIT 풍 zsh license, 호의적) 로 옮겼고 그 뒤로 계속 최신을 유지하고 있어.
bash 3.2 대비 zsh 가 주는 것
- 제대로 된 completion 엔진 —
compinit+ 커뮤니티가 만든 수천 개 completion 파일.git옆에서 Tab 누르면 branch 보이고,kubectl옆에서는 pod 가 보여. - 재귀 globbing —
**/*.py한 번이면 현재 디렉터리 아래 모든 Python 파일. 흔한 케이스에 더 이상find안 써도 돼. - Glob qualifier —
*(.om[1])= '이 디렉터리에서 가장 최근에 수정된 일반 파일'. 짧고 빨라. - Themed prompt — Powerlevel10k, Starship, Pure. git branch, Python venv, Kubernetes context 가 스크립팅 없이 프롬프트에 표시돼.
- 플러그인 생태계 — Oh-My-Zsh, Prezto, zinit. auto-suggestion, syntax highlighting, history search 같은 거 한 줄 추가로 들어와.
bash 에서 그대로 가져온 것
인터랙티브 bash 습관 거의 다 그대로 통해 — $(...), [[ ]], $?, $0, here-doc, set -e, 배열. 차이는 딴 데서 나와: word splitting, glob 동작, read 플래그, array 인덱스 시작 (zsh 기본은 1 — scripting 트랙 에서 다룸).
script 는 zsh? bash?
네 노트북 안에서만 도는 스크립트는 zsh 도 OK. 서버, 컨테이너 이미지, CI runner, 다른 개발자 머신으로 보낼 스크립트는 bash 나 POSIX sh 로 — bash 는 모든 리눅스 배포판에 있지만 zsh 는 아닌 경우 많아. shebang 이 결정하고, 본문은 거기 맞춰야 해.