Zsh
Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
— Zsh 매뉴얼
"개발 생산성을 높이겠다고 Zsh 테마 꾸미는 데 이틀을 썼는데, 정작 코딩은 두 줄 짰습니다." 본격 주객전도 터미널 인테리어 시뮬레이터1
1. 개요
본 셸, KornShell, tcsh 등의 장점만을 기가 막히게 흡수하여 1990년에 첫선을 보인 초강력 명령 줄 인터페이스용 셸이다. 오랫동안 아는 사람들만 쓰는 마니아의 전유물이었으나, macOS의 기본 셸로 강제 징용되면서 전 세계 수많은 개발자들의 기본 장비로 떡상했다. 막강한 자동 완성(Tab completion)과 강력한 와일드카드 확장, 스펠링 교정 기능 등을 탑재하여 사용자가 터미널에서 오타를 내도 알아서 찰떡같이 고쳐주는 마법을 선보인다.(...) 특히 오픈소스 프레임워크인 Oh My Zsh와의 결합을 통해 터미널을 우주선 계기판처럼 화려하게 꾸밀 수 있어, 주니어 개발자들의 가장 강력한 감성 간지 템으로 자리 잡고 있다.
2. 오 마이 지쉬 (Oh My Zsh)의 지배력
Zsh를 쓰면서 Oh My Zsh를 설치하지 않는 것은 팥 없는 단팥빵을 먹는 것과 같다. 이 강력한 프레임워크 덕분에 개발자들은 단 한 줄의 명령어로 입맛에 맞는 커스텀 테마를 적용할 수 있다. 대표적인 테마인 Agnoster는 현재 터미널이 위치한 디렉터리와 깃(Git) 브랜치 상태를 직관적인 아이콘과 색상으로 한눈에 보여주어 압도적인 인기를 누린다. 하지만 이 아름다운 화면을 얻기 위해선 특수한 파워라인 폰트(Powerline Fonts)를 설치해야 하는데, 폰트 설정을 잘못 건드려 특수문자가 네모 꼴로 깨지는 현상이 발생하면 초보자들은 멘붕에 빠지게 된다.
3. 배시(Bash)와의 호환성과 성능 논란
Zsh는 본 셸 계열의 문법을 거의 100% 호환하기 때문에, 대다수의 배시 스크립트를 수정 없이 고스란히 돌릴 수 있다. 그러나 플러그인을 과도하게 추가할 경우 치명적인 성능 저하가 수반된다. 텍스트를 입력할 때마다 역사 목록을 실시간 검색하여 미래의 입력을 예측하는 zsh-autosuggestions나 실시간으로 문법의 적합성을 체크해 색깔을 입혀주는 zsh-syntax-highlighting 같은 무거운 플러그인들이 대표적이다. 터미널 창을 처음 열 때 1~2초씩 버벅거리는 현상이 발생하면, 결국 참다못해 무거운 로더를 버리고 순정 Zsh로 회귀하거나 하드코어 최적화 스크립트를 작성하는 불상사가 벌어진다.2
4. 관련 밈 및 드립
4.1. 터미널 인테리어 업자
주니어 개발자나 리눅스 입문자가 코딩 공부보다 오 마이 지쉬 테마 설정, 폰트 적용, 투명도 조절, 네온 사인 효과 적용 등 터미널을 화려하게 꾸미는 데에 온 영혼과 에너지를 쏟아붓는 현상을 조롱하는 밈이다. 정작 이쁘게 꾸며놓고 치는 명령어는 git status와 cd ..가 전부라는 뼈 때리는 팩트 폭력이 뒤따른다.(...) 심지어 폰트가 깨지면 개발 커뮤니티에 '폰트 왜 깨지나요?' 질문 글을 올리며 하루를 다 날려먹기도 한다.
4.2. Oh My Zsh is Slow
Zsh가 무겁다는 인식을 심어준 주범이다. 화려하고 편리한 플러그인을 영혼까지 끌어 모아 설치하면, 어느 순간 터미널을 새로 열 때 마우스 커서가 1~2초 동안 뱅글뱅글 도는 기적을 목격하게 된다. 성능을 위해 가볍게 쓰려고 셸을 바꿨다가 일렉트론 앱보다 느려지는 참상을 겪고 눈물을 흘리며 플러그인을 다이어트하는 고인물들의 모습이 연출되곤 한다.
5. 여담
- 이름의 기원: 프린스턴 대학교 시절 교수였던 'Zhong Shao'의 로그인 아이디인 'zsh'에서 영감을 받아 이름이 결정되었다. 딱히 'Z'에 대단한 기술적 의미가 있었던 것은 아니라고 한다.
- 엄청난 대소문자 무시: Zsh의 자동 완성은 대소문자를 구분하지 않고 최적의 경로를 매칭해 주는 옵션을 제공한다. 대소문자 하나 틀려도 한 땀 한 땀 타이핑해야 했던 배시 유저들에게는 그야말로 혁명과도 같은 경험이다.
- 자동 교정(Autocorrect): 사용자가 명령어를 잘못 치면 '혹시 이거 치려고 했니?'라며 스스로 질문을 던진다. 가끔 맞춤법 검사기처럼 굴어 귀찮을 때도 있지만 의외로 오타율을 줄여주는 일등 공신이다.