Skip to content
Published on

터미널 & 셸 도구 2026 — Ghostty / Wezterm / Alacritty / Kitty / Warp / Fish 4 / Nushell / Zellij / Starship 심층 가이드

Authors

프롤로그 — 터미널이 다시 흥미로워졌다

10년 동안 터미널은 "지루한 도구"였다. 1990년대에 자리잡은 xterm 모델 위에서 iTerm2(2008)와 GNU screen(1987), tmux(2007)가 거의 모든 것을 정리해 두었고, 그 뒤로는 "조금 더 예쁜 폰트"와 "조금 더 빠른 렌더링" 정도가 변화의 전부였다.

2024–2026년 사이에 그 풍경이 통째로 흔들렸다.

  • 2024년 12월, Ghostty 1.0이 정식 출시됐다. Mitchell Hashimoto가 HashiCorp를 떠나 2년간 만든 Zig 기반 터미널이다. private beta 시절부터 화제였고, GA 첫 주에 GitHub 스타가 폭발했다.
  • Fish 4(2024)가 등장하면서 셸 자체가 Rust로 다시 쓰이는 시대가 열렸다. C++ 코드 베이스를 단계적으로 Rust로 옮긴 가장 큰 셸 프로젝트다.
  • Warp는 AI 네이티브 터미널로 자리잡았다. Rust + Apple Metal 기반에 LLM 통합을 처음부터 1등 시민으로 올렸다.
  • Nushell은 더 이상 실험이 아니다. 0.x 버전이지만, 데이터 엔지니어와 SRE 사이에서 "Python 대신 셸"로 쓰는 사람이 늘었다.
  • Zellij가 tmux의 대안으로 성장했고, starship은 사실상 모든 셸의 표준 프롬프트가 됐다.
  • bat / eza / zoxide / fd / ripgrep / fzf / atuin — Unix 유틸을 Rust로 다시 쓰는 흐름은 이제 디폴트다. Apple은 macOS Sequoia부터 BSD ripgrep을 기본 grep의 대안으로 권장하기 시작했다.

이 글은 2026년 현재의 터미널·셸·multiplexer·CLI 유틸 풍경을 에뮬레이터 → 셸 → multiplexer → 프롬프트 → 유틸 → dotfiles 순으로 한 호흡에 정리한다. 끝에는 macOS·Linux·Windows·디자인 우선·속도 우선 시나리오별로 누가 무엇을 골라야 하는지 매트릭스를 둔다.


1장 · 2026년의 터미널 지도 — 네 가지 분류

먼저 그림 한 장. "터미널" 한 단어 안에는 사실 네 가지 다른 것이 들어있다.

[당신의 키보드]
      |
      v
+----------------------+
|  Terminal Emulator   |   ← 픽셀을 그리는 GUI
|  (Ghostty, iTerm2,   |     Ghostty / Wezterm / Alacritty / Kitty
|   Wezterm, Warp ...) |     Warp / iTerm2 / Windows Terminal
+----------+-----------+
           |
           |  pty (가상 터미널)
           v
+----------------------+
|        Shell         |   ← 명령어를 해석하는 인터프리터
|  (bash, zsh, fish,   |     bash / zsh / fish / nushell
|   nushell, ...)      |     elvish / xonsh / Oils sh
+----------+-----------+
           |
           |  fork / exec
           v
+----------------------+
|     Multiplexer      |   ← 세션·창·패널 관리
|   (tmux, zellij,     |     tmux / zellij / screen / dvtm
|    screen, ...)      |
+----------+-----------+
           |
           v
+----------------------+
|   CLI 유틸 + prompt  |   ← bat / eza / zoxide / fd / rg / fzf / atuin
+----------------------+   ← starship / p10k / oh-my-zsh / oh-my-posh

이 네 레이어를 분리해서 보지 않으면 도구 선택이 꼬인다. "Warp가 좋다"라는 말은 에뮬레이터 + 셸 + multiplexer + 일부 prompt 기능을 하나로 합친 제품이 좋다는 뜻이지, "tmux보다 빠르다"는 의미가 아니다. 반대로 "Ghostty + zsh + tmux + starship + atuin"은 네 레이어를 명확히 분리한 클래식 조합이다.

기억할 한 줄: "에뮬레이터는 픽셀, 셸은 의미, multiplexer는 세션, prompt는 정보."


2장 · Ghostty — Mitchell Hashimoto의 2년 작업, 2024년 12월 GA

가장 흥미로운 신예부터.

Ghostty는 Mitchell Hashimoto가 HashiCorp(Terraform·Vault·Consul의 회사)를 떠나 풀타임으로 2년간 쓴 터미널이다. 2024년 12월 정식 출시(1.0) 직전까지 private beta로만 돌렸고, GA 첫 주에 별 2만 개가 붙었다.

핵심 특징:

  • Zig로 작성 — Rust도 C++도 아니다. Zig는 메모리 안전성과 단순함의 절충점을 노린 시스템 언어다. Mitchell은 "Zig 컴파일러 자체를 자주 패치해 가며 만들었다"고 인터뷰에서 말했다.
  • 네이티브 GUI — macOS는 SwiftUI, Linux는 GTK4. Electron이 아니다. Ghostty의 본체는 libghostty라는 C 라이브러리고, 각 플랫폼이 자기 GUI를 입힌다.
  • xterm 100% 호환 — 진지하게 ECMA-48, ISO 2022, DEC private modes, xterm 확장까지 다 구현했다. Mitchell은 "터미널 프로토콜 자체가 흥미로워서 시작했다"고 밝혔다.
  • GPU 렌더링 — Metal(macOS) / OpenGL(Linux). Alacritty급 속도.
  • Kitty graphics protocol + Sixel 지원 — 이미지 인라인 출력이 된다.
  • 거의 모든 설정이 키-값 파일~/.config/ghostty/configfont-size = 14 식으로 쓴다. Lua도 Python도 없다.

설정 예시 (한 줄짜리 단순함):

# ~/.config/ghostty/config
font-family = "JetBrains Mono"
font-size = 14
theme = "GruvboxDarkHard"
background-opacity = 0.95
window-padding-x = 12
window-padding-y = 12
macos-titlebar-style = "tabs"
keybind = cmd+t=new_tab
keybind = cmd+shift+enter=toggle_fullscreen

Ghostty가 화제가 된 이유는 단순한 새 터미널이라서가 아니다. **"한 사람이 풀타임 2년을 들이면 이 정도 품질의 시스템 소프트웨어가 나온다"**는 증명이었다. xterm 호환성, GPU 렌더링, 두 플랫폼 네이티브 GUI를 한 번에 만족시킨 터미널은 그 전에는 없었다.

한계도 있다.

  • Windows 미지원 — 2026년 5월 현재 macOS·Linux 전용. WSL은 가능.
  • 확장성이 낮다 — Lua나 Python 같은 스크립팅이 없다. 키바인딩 정도가 끝.
  • 테마 생태계는 아직 작다 — iTerm2처럼 사용자가 만들어 둔 수천 개 테마를 그대로 쓰지는 못한다.

기억할 한 줄: Ghostty는 "그냥 빠르고 깔끔한 터미널"이다. 그게 가장 큰 장점이다.


3장 · Wezterm — Lua로 스크립트하는 Rust 터미널

Wezterm(Wez Furlong)은 2020년부터 활발히 개발된 Rust 기반 터미널이다. 한 줄 요약: "Lua 설정 + 내장 multiplexer + 멀티 OS".

특징:

  • Rust — wgpu를 통해 Metal·Vulkan·DX12·OpenGL을 다 지원.
  • Lua 설정~/.wezterm.lua. 키바인딩·자동화·이벤트 훅을 풀-스크립팅 언어로 짠다. 신중하게 설계된 강력함.
  • 내장 multiplexerwezterm cli 명령으로 tmux 비슷한 일을 한다. 원격 호스트의 wezterm-mux-server에 붙어 영구 세션을 띄울 수도 있다.
  • Linux·macOS·Windows 네이티브 — 세 OS 모두 GPU 가속.
  • SSH 도메인 — Wezterm 안에서 SSH로 붙은 원격 호스트의 패널을 로컬 패널처럼 다룬다.

설정 예시:

-- ~/.wezterm.lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()

config.font = wezterm.font 'JetBrains Mono'
config.font_size = 14
config.color_scheme = 'GruvboxDark'
config.window_background_opacity = 0.95
config.hide_tab_bar_if_only_one_tab = true

-- 키바인딩
config.keys = {
  { key = 't', mods = 'CMD',       action = wezterm.action.SpawnTab 'CurrentPaneDomain' },
  { key = 'd', mods = 'CMD',       action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
  { key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical   { domain = 'CurrentPaneDomain' } },
}

-- 이벤트 훅
wezterm.on('update-right-status', function(window, pane)
  window:set_right_status(wezterm.strftime '%H:%M:%S')
end)

return config

Wezterm을 고르는 이유는 명확하다: 모든 설정을 코드로 관리하고 싶고, 한 도구 안에서 multiplexer까지 끝내고 싶을 때. Ghostty의 단순함보다 Wezterm의 표현력을 원하는 사람들이다.


4장 · Alacritty — 가장 단순한 Rust 터미널

Alacritty(2017–)는 Rust 기반 터미널의 시조다. 철학은 한 줄: "렌더링을 빠르게, 나머지는 안 한다."

  • GPU 렌더링 — OpenGL ES2 기반. 벤치마크에서 가장 빠른 축에 든다.
  • YAML → TOML 설정alacritty.toml에 폰트·색·키바인딩만 쓴다.
  • No tabs, no splits — 탭과 패널을 일부러 안 만든다. "그건 tmux의 일"이라는 입장.
  • 모든 OS — macOS·Linux·Windows·BSD.

설정 예시:

# ~/.config/alacritty/alacritty.toml
[font]
normal = { family = "JetBrains Mono", style = "Regular" }
size = 14

[colors.primary]
background = '#1d2021'
foreground = '#d4be98'

[window]
opacity = 0.95
padding = { x = 12, y = 12 }
decorations = "buttonless"

[keyboard]
bindings = [
  { key = "T", mods = "Command", action = "SpawnNewInstance" },
]

Alacritty의 매력은 단순함이다. "터미널은 글자를 그리는 일에만 집중하고, 세션 관리는 tmux한테 맡겨라." 이 철학을 좋아하면 Alacritty가 답이다. 2026년에는 Ghostty가 비슷한 단순함에 SwiftUI 네이티브 GUI까지 얹어 강력한 경쟁자가 됐지만, 크로스플랫폼 호환성에서는 여전히 Alacritty가 우위다.


5장 · Kitty — GPU 가속 + Python 설정

Kitty(Kovid Goyal, 2017–)는 C와 Python을 섞은 터미널이다. Alacritty와 같은 시기에 등장했지만 철학이 정반대다: "기능을 많이 넣자."

  • GPU 렌더링 — OpenGL.
  • Kitty graphics protocol — 이미지·아이콘·미리보기를 인라인 출력. 이제 Ghostty와 Wezterm도 이 프로토콜을 지원한다(Kitty가 사실상 표준화한 셈).
  • kittens — Python으로 작성된 미니 앱들. icat(이미지 보기), hyperlinked_grep, clipboard 등.
  • 탭·스플릿 내장 — multiplexer 없이도 쓸 만하다.
  • conf 형식 설정~/.config/kitty/kitty.conf. 키-값 위주.

설정 예시:

# ~/.config/kitty/kitty.conf
font_family      JetBrains Mono
font_size        14.0
background_opacity 0.95
window_padding_width 12

# 탭
map cmd+t new_tab
map cmd+shift+enter toggle_fullscreen

# 스플릿
enabled_layouts splits,stack
map cmd+d launch --location=vsplit
map cmd+shift+d launch --location=hsplit

Kitty는 **"하나의 도구에서 다 끝내고 싶지만, Lua나 JS는 싫고 Python이 좋다"**는 사람을 위한 선택이다. 과학·연구·머신러닝 쪽에서 많이 쓴다.


6장 · Warp — AI-first 터미널의 야심

Warp(2020–)는 가장 큰 베팅을 한 터미널이다. Y Combinator 출신, 시리즈 B까지 받았고, "터미널을 30년 만에 다시 설계한다"는 슬로건으로 시작했다.

핵심 차별점:

  • Rust + Apple Metal — macOS에서 60fps + 4K 디스플레이를 부드럽게 그린다.
  • 블록 기반 UI — 명령어 + 출력을 하나의 "블록"으로 묶어 위/아래로 이동하고, 검색하고, 공유할 수 있다.
  • AI 통합 — "Warp AI"가 자연어로 명령을 만들어 주고, 출력을 설명하고, 에러를 해석한다. 2024년에 자체 LLM 통합부터 Claude·GPT까지 옵션을 늘렸다.
  • Warp Drive — 팀이 명령어 워크플로를 공유하는 클라우드 기능. SaaS 부분.
  • Workflows — 자주 쓰는 명령어를 파라미터화해서 저장. shell alias의 발전형.
  • Notebooks — Jupyter처럼 markdown + 명령어를 섞는 문서 포맷.

쟁점:

  • 클라우드 의존 — 로그인이 필요했다(2024년 말 부분적으로 익명 모드 추가). 일부 SRE/보안팀에서 거부 반응이 있다.
  • macOS 우선 — Linux는 2023년 베타, 2025년에 안정화. Windows는 여전히 미지원.
  • 셸 호환성 — Warp는 자체 셸 래퍼를 끼워서 동작한다. zsh·bash·fish는 거의 다 되지만, 일부 특수 prompt 설정(예: Powerlevel10k의 instant prompt)이 충돌하는 경우가 있다.

Warp를 고르는 사람들:

  • AI 어시스트가 작업의 일부가 됐고, 터미널에서 자연어 → 명령어 변환이 잦은 개발자.
  • 팀 워크플로를 공유하고 싶은 SRE/DevOps 팀.
  • "터미널을 처음부터 다시 디자인하는 게 맞다"는 철학에 동의하는 사람.

피하는 사람들:

  • 클라우드 종속과 텔레메트리에 민감한 보안팀.
  • "터미널은 단순해야 한다"는 Unix 철학파.
  • Windows 사용자.

기억할 한 줄: Warp는 "에디터의 진화가 VS Code였다면, 터미널의 진화는 우리"라는 베팅이다.


7장 · iTerm2 / Windows Terminal / Tabby / Hyper — 기존 강자들의 현재

iTerm2 — macOS의 클래식 (2008–)

George Nachman의 ObjC 작품. 17년째 macOS 터미널의 표준이다.

  • 풍부한 기능 — 분할 패널, 트리거, 자동완성, hotkey window, Shell Integration까지.
  • 단점 — Apple Silicon에서 다른 GPU 가속 터미널 대비 느리다는 평이 굳어졌다.
  • 2026년 현황 — 안정적인 유지보수 모드. iTerm2를 떠나 Ghostty로 가는 흐름이 가속 중.

Windows Terminal — Microsoft 공식 (2019–)

  • Windows 11 기본 터미널 — cmd·PowerShell·WSL을 한 창에서 다 띄운다.
  • DirectX 11 + DirectWrite 렌더링 — 빠르다.
  • JSON 설정settings.json에 다 들어간다.
  • 2026년 현황 — Windows에서는 사실상 표준. WSL 사용자도 그대로 쓴다.

Tabby (구 Terminus) — Electron 기반 크로스플랫폼 (2017–)

  • Electron — 가볍지는 않지만 macOS·Linux·Windows에서 똑같이 돈다.
  • 플러그인 생태계 — npm 식으로 플러그인을 설치한다.
  • SSH·Telnet·Serial 클라이언트 내장 — PuTTY 대체로 쓰는 사람이 많다.

Hyper — JS/HTML/CSS로 만드는 Electron 터미널 (2016–)

  • Vercel(구 Zeit) 작품 — JS·CSS로 테마를 만든다.
  • 2026년 현황 — 정체 상태. Electron의 무게와 성능 한계로 인해 새 사용자 유입이 거의 끊겼다.

기억할 한 줄: 2026년 macOS에서 새로 시작한다면 Ghostty 또는 Wezterm이 답이다. Windows라면 Windows Terminal이 정답.


8장 · Fish 4 (2024) — Rust 재작성

셸 쪽으로 넘어가자. 가장 큰 사건은 Fish 4다.

Fish(Friendly Interactive Shell)는 2005년부터 있었지만, 오랫동안 C++로 쓰여 있었다. 2024년 공개된 Fish 4는 C++ 코드 베이스를 거의 다 Rust로 옮긴 메이저 릴리스다. 이는 PostgreSQL·CPython 같은 대형 OSS 프로젝트가 Rust 마이그레이션을 검토할 때 자주 인용되는 사례다.

Fish의 매력 (Fish 1부터 이어진):

  • POSIX 호환 안 한다 — 일부러 안 한다. if/then/fi 대신 if/end. 이게 호불호.
  • 즉시 자동완성 — 입력하면서 회색으로 미리 보여 준다.
  • 신택스 하이라이팅 — 명령어가 존재하면 색이 바뀐다.
  • 함수와 abbreviation — alias보다 풍부한 메커니즘.

Fish 4의 핵심:

  • Rust로 다시 씀 — 더 빠른 시작, 더 안전한 메모리, 더 작은 바이너리.
  • CMake → Cargo — 빌드 시스템 자체가 바뀜.
  • 호환성 유지 — 사용자 입장에선 거의 차이 없음. 함수·alias·키바인딩 다 그대로.

설정 예시:

# ~/.config/fish/config.fish
set -gx EDITOR nvim
set -gx PATH $HOME/.cargo/bin $PATH

# abbreviation — 입력 시 풀려서 보임
abbr -a gst git status
abbr -a gco git checkout
abbr -a k kubectl

# starship 프롬프트
starship init fish | source

# zoxide
zoxide init fish | source

# 키바인딩
bind \cr 'atuin search'

Fish 4가 의미하는 것:

  1. 셸 자체를 Rust로 다시 쓰는 흐름의 신호탄 — Nushell이 처음부터 Rust였다면, Fish 4는 "기존 셸을 Rust로 옮긴" 첫 대형 사례.
  2. C++ → Rust 마이그레이션 사례 연구 — 단계적 ports, 인터옵 레이어, 빌드 시스템 변경까지 모든 패턴이 공개됨.
  3. 사용자에게 큰 변화 없음 — 잘된 마이그레이션의 정의. 사용자가 모르고 쓰는 것.

9장 · Nushell — 구조화 데이터를 흐르는 셸

Nushell(2019–, Jonathan Turner·Yehuda Katz 등)은 셸의 패러다임을 바꾸려는 시도다.

기존 셸의 전제: "파이프로 흐르는 건 텍스트다." Bash든 zsh든, 명령어 사이를 흐르는 건 줄바꿈으로 구분된 문자열이다. ls | grep foo | awk '{print $1}'처럼.

Nushell의 전제: "파이프로 흐르는 건 구조화된 테이블이다." ls가 출력하는 건 행과 열을 가진 테이블이고, 다음 명령어는 그 컬럼을 이름으로 참조할 수 있다.

비교:

# Bash: 텍스트 파싱
ls -la | awk '{print $5, $9}' | sort -n
# Nushell: 구조화 데이터
ls | select name size | sort-by size
# JSON·CSV·TOML·YAML·SQLite 모두 같은 방식
open data.csv | where age > 30 | select name email
open package.json | get dependencies | columns

# HTTP도 같은 모델
http get https://api.github.com/repos/nushell/nushell | get stargazers_count

# SQL 비슷한 질의도 가능
ls | where modified > (date now) - 7day | sort-by modified

Nushell의 매력:

  • 구조화 데이터 일관성 — JSON·CSV·SQL을 같은 문법으로 다룬다.
  • 타입과 자동완성 — 컬럼 이름을 셸이 안다.
  • 크로스플랫폼 — Windows에서도 1등 시민으로 동작.
  • 확장성 — 플러그인을 Rust로 짠다.

한계:

  • POSIX 비호환 — 기존 셸 스크립트가 그대로 안 돈다. bash -c '...'로 우회.
  • 0.x 버전 — 문법이 아직 가끔 깨진다(2026년에는 안정화 단계로 진입했지만 여전히 메이저 변경이 있다).
  • 에코시스템 작음 — Fish·zsh만큼의 플러그인은 없다.

Nushell이 가장 잘 맞는 곳: 데이터 처리·옵스 자동화·SRE 일일 작업. "Python으로 짜기엔 크고, jq·awk 파이프라인으로는 복잡할 때." 그 빈 자리에 들어간다.


10장 · Elvish / Murex / xonsh / Oils sh — 그 외 신예 셸들

Nushell 말고도 셸을 다시 생각하는 프로젝트가 꽤 있다.

Elvish

  • Go로 작성 — 동시성 모델이 좋다.
  • 구조화 데이터 — list·map을 일급 시민으로.
  • use로 모듈 — 함수 라이브러리를 import할 수 있다.

Murex

  • POSIX 호환 + 타입 시스템 — bash 스크립트와 호환되면서도 JSON·YAML 일급 시민.
  • 이벤트 기반event 키워드로 셸 이벤트에 훅을 건다.

xonsh

  • Python + shell의 하이브리드 — 한 줄 안에서 Python 표현식과 셸 명령어를 섞는다.
  • $(...) 안의 셸 명령어 결과가 Python 객체 — 데이터 분석 작업에 잘 맞는다.

Oils sh (구 Oil)

  • Andy Chu의 야심작 — POSIX 호환 + YSH(새 문법) 두 모드.
  • bash 호환 + 데이터 구조 + 더 나은 에러 메시지 — bash 사용자가 "그대로 옮길 수 있는 더 좋은 셸"을 목표.

이 네 셸은 모두 5천–2만 GitHub 스타 수준. Nushell이 압도적인 1위지만, 각자 다른 철학을 보여 준다. Elvish는 Go 사용자, Murex는 POSIX 호환을 포기 못 하는 사람, xonsh는 데이터 사이언티스트, Oils는 "더 나은 bash"를 원하는 사람에게 맞는다.


11장 · tmux vs Zellij — Multiplexer 비교

세션·창·패널을 관리하는 multiplexer 시장은 오랫동안 tmux(2007–)의 독점이었다. GNU screen(1987–)은 여전히 살아있지만 사실상 유지보수 모드, dvtm은 minimalist 마니아용.

2026년의 도전자는 Zellij(2020–, Rust).

tmux — 표준

  • C로 작성 — 가볍고 빠름.
  • 모든 Linux/macOS에 기본 — 어디서나 동작.
  • prefix 키 기반Ctrl-B 같은 prefix 후 다음 키.
  • 풍부한 설정.tmux.conf에 거의 모든 걸 바꿀 수 있다.
  • TPM(Tmux Plugin Manager) — 플러그인 생태계.

설정 예시:

# ~/.tmux.conf
set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g mouse on
set -g history-limit 10000
set -g base-index 1
set -g renumber-windows on

# 분할
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"

# 패널 이동
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# 상태바
set -g status-style 'bg=#1d2021 fg=#d4be98'

Zellij — 모던 도전자

  • Rust로 작성.
  • 디스커버블한 UI — 화면 아래에 단축키 힌트가 항상 떠 있다. 처음 쓰는 사람도 헤매지 않는다.
  • YAML/KDL 설정~/.config/zellij/config.kdl.
  • WASM 플러그인 — 플러그인을 Rust·Go·기타 언어로 짜서 WASM으로 컴파일.
  • 레이아웃 — 자주 쓰는 패널 배치를 파일로 저장.
  • floating panels·tabs — tmux에는 없는 UX.

비교 매트릭스:

항목tmuxZellij
성숙도매우 높음중간
학습 곡선가파름완만함
기본 UXprefix 키디스커버블 힌트
설정 형식tmux DSLKDL
플러그인TPMWASM
메모리매우 가벼움가벼움
원격 SSH1등 시민가능
어디서나 깔려 있음그렇다아니다

언제 tmux: 원격 SSH에서 살고, 모든 서버에 깔려 있어야 하고, 머리에 단축키가 박혀 있는 시니어.

언제 Zellij: 로컬에서 거의 다 쓰고, 새로 시작하는 사람, "단축키 외우기 싫다"는 사람.


12장 · Starship — 거의 모든 셸의 표준 프롬프트

프롬프트 레이어. 이 시장은 starship(2019–, Matt Knox)이 사실상 통일했다.

starship의 강점:

  • 셸 독립 — bash·zsh·fish·nushell·elvish·xonsh 다 지원.
  • Rust — 빠르다. Powerlevel10k처럼 instant prompt를 안 써도 충분.
  • TOML 한 파일 설정~/.config/starship.toml.
  • 120개 이상의 모듈 — git·node·python·rust·docker·kubernetes·terraform·aws·gcp·azure·...
  • 확장 가능한 custom 모듈.

설치:

# 설치
curl -sS https://starship.rs/install.sh | sh

# 셸에 등록 (해당 셸의 rc 파일에 한 줄)
# bash:  eval "$(starship init bash)"
# zsh:   eval "$(starship init zsh)"
# fish:  starship init fish | source

설정 예시:

# ~/.config/starship.toml
add_newline = true

format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$kubernetes\
$character"""

[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"

[directory]
truncation_length = 3
truncate_to_repo = true

[git_branch]
symbol = " "
format = "[$symbol$branch]($style) "

[kubernetes]
disabled = false
format = '[⛵ $context \($namespace\)](dimmed green) '

starship 외 옵션:

  • oh-my-zsh — zsh 플러그인 프레임워크. 프롬프트 + 수백 개의 플러그인. starship보다 무거움. zsh-only.
  • oh-my-posh — PowerShell·zsh·bash 지원. starship과 가장 비슷한 경쟁자. Windows 쪽에서 인기.
  • Powerlevel10k (p10k) — zsh 전용. 가장 화려하고 가장 빠른(instant prompt) zsh 프롬프트. 단, 2022년부터 사실상 유지보수 모드. starship으로 옮기는 사람 다수.

기억할 한 줄: 2026년 새로 시작한다면 starship이 답이다. zsh+oh-my-zsh+p10k 조합은 여전히 유효하지만, 새로 만들 이유가 없다.


13장 · Rust CLI 시리즈 — bat / eza / zoxide / fd / ripgrep / fzf / atuin

Unix 표준 유틸을 Rust로 다시 쓴 일군의 도구들. 모두 GitHub 스타 1만 이상.

bat — 더 나은 cat

bat README.md
# 신택스 하이라이트 + git diff 표시 + 자동 페이저

cat 대체로 alias하는 게 일반적: alias cat=bat.

eza (구 exa) — 더 나은 ls

eza -la --git --icons
eza -T --level=2  # 트리 뷰

원조 exa가 유지보수 중단되면서 eza가 fork해서 이어간다. lsd라는 비슷한 대안도 있다.

zoxide — 더 나은 cd

# 처음 한 번 들어가면 학습됨
cd ~/work/yj-next-blog2

# 다음부터는
z next-blog2     # 어디서든
z blog2          # 부분 매치
zi               # fzf 인터랙티브 모드

자주 가는 디렉토리를 점수로 학습해서 단어 일부만으로 점프. 한 번 익숙해지면 cd ../../../foo로 다시 돌아갈 수 없다.

fd — 더 나은 find

fd README           # 이름에 README가 들어간 모든 파일
fd -e mdx           # 확장자 mdx
fd -t f --changed-within 1d  # 1일 이내에 수정된 파일

find의 복잡한 문법(-name '*foo*' -type f)을 인간이 쓸 수 있는 형태로.

ripgrep (rg) — 더 나운 grep

rg "fn main"                # 현재 디렉토리 전체 재귀 검색
rg -t rust "TODO"           # rust 파일만
rg -i -A 3 "error"          # 대소문자 무시 + 매치 후 3줄

GitHub 코드 검색 엔진의 기반. .gitignore를 자동으로 존중하고, 멀티스레드 + SIMD로 grep보다 한 자리 수 빠르다.

fzf — 퍼지 파인더

# 파일 선택
vim "$(fzf)"

# Ctrl-R로 명령어 히스토리
# Ctrl-T로 현재 디렉토리 파일
# Alt-C로 cd

# 모든 명령어에 fzf 묶기
ls | fzf | xargs cat

설치 후 셸에 통합하면 Ctrl-R(히스토리)·Ctrl-T(파일)·Alt-C(cd)가 즉시 활성화된다. 한 번 익숙해지면 못 떠난다.

atuin — 더 나은 셸 히스토리

# 설치 후
atuin init zsh | source
atuin import auto

# Ctrl-R이 atuin UI로 바뀜
# 종료 코드·실행 시간·디렉토리·세션·호스트별 검색
# 옵션: 동기화 (자체 호스팅 가능)

기존 .zsh_history보다 훨씬 강력한 검색. 여러 머신 사이에 동기화하고 싶으면 atuin 클라우드(또는 self-host)에 동기화한다.

한 번에 다 깔기 (Homebrew 기준):

brew install bat eza zoxide fd ripgrep fzf atuin starship

zsh에 한꺼번에 등록:

# ~/.zshrc 끝에
eval "$(starship init zsh)"
eval "$(zoxide init zsh --cmd cd)"
eval "$(atuin init zsh)"
source <(fzf --zsh)
alias ls='eza --icons --git'
alias cat='bat --plain'
alias find='fd'
alias grep='rg'

기억할 한 줄: 이 7개 도구를 다 깔면 셸이 다른 셸이 된다. 처음 1주는 어색하고, 그 후로는 GNU coreutils의 일부 명령어를 잊어버린다.


14장 · 한국·일본 — 토스 dotfiles, 메르카리 셸 셋업

한국 — 토스·네이버·카카오의 풍경

토스(Viva Republica) 같은 모던 스타트업의 시니어 개발자 dotfiles 저장소를 들여다보면 패턴이 보인다.

전형적인 토스 시니어의 macOS 셋업:

  • 에뮬레이터: Ghostty (2025년 이후 늘어남) 또는 iTerm2
  • : zsh + oh-my-zsh 또는 zsh + zinit (가벼움)
  • 프롬프트: starship (Powerlevel10k에서 옮긴 사람이 많음)
  • multiplexer: tmux
  • 유틸: ripgrep + fzf + zoxide + bat + eza + atuin

네이버 백엔드 팀의 서버 작업은 다르다: Linux + bash + tmux + ripgrep + fzf. starship은 가끔. **"서버에서는 어디서나 깔려 있는 도구만 쓴다"**가 사실상 룰.

카카오는 사일로별 차이가 크다. AI 팀은 zsh + starship + nushell 실험 중, 보수적인 백엔드 팀은 bash + tmux.

한국 OSS 쪽: GitHub karpathy·gleitz/howdoi 같은 글로벌 도구가 한국 개발자 dotfiles에 자주 보인다. 그 외에는 글로벌 흐름과 거의 차이가 없다.

일본 — 메르카리·LINE·CyberAgent

메르카리의 SRE 팀이 공개한 dotfiles 저장소는 모범 답안이다.

메르카리식 macOS 셋업:

  • 에뮬레이터: iTerm2 → Wezterm으로 옮기는 흐름. Ghostty는 2025년 후반부터.
  • : zsh + zinit + chezmoi (dotfiles 관리)
  • multiplexer: tmux (원격 EC2에 항상 attach)
  • 프롬프트: starship
  • 유틸: ripgrep + fd + fzf + bat + eza + atuin + direnv
  • 추가: kubectx + kubens (k8s 컨텍스트 전환), pet (snippet 매니저, 일본 개발자 작품)

LINE Yahoo는 대규모 인프라 특성상 보수적: Linux + bash + tmux. SRE 팀 일부에서 Nushell 실험.

CyberAgent의 AI Lab은 가장 진보적: Warp + AI 통합 적극, Nushell 데이터 작업, Zellij 시도.

일본 OSS:

  • pet — knqyf263 작품. snippet/scratch 매니저. fzf와 묶어 자주 쓰는 명령어를 검색.
  • peco — fzf 비슷한 인터랙티브 필터. 일본 개발자가 만들었고 일본 dotfiles에서 매우 흔함.
  • ghq — motemen 작품. GitHub repo를 디렉토리 트리로 관리.

기억할 한 줄: 한국·일본의 시니어 개발자 dotfiles는 글로벌 흐름의 빠른 채택자다. 다만 일본은 자국 OSS(pet·peco·ghq)를 더 적극적으로 섞는다.


15장 · 누가 무엇을 골라야 하나 — 시나리오별 매트릭스

마지막 장. "어디서 어떤 도구를 쓸지" 결정을 돕는 매트릭스.

macOS 신규 사용자

항목추천대안
에뮬레이터GhosttyWezterm
zshfish 4
MultiplexertmuxZellij
프롬프트starshipp10k
유틸bat + eza + zoxide + fd + rg + fzf + atuin

macOS — AI/디자인 우선

항목추천대안
에뮬레이터WarpGhostty
(Warp 내장)
프롬프트(Warp 내장)starship

Linux 데스크탑

항목추천대안
에뮬레이터GhosttyWezterm·Alacritty·Kitty
zsh 또는 fish 4bash
MultiplexertmuxZellij
프롬프트starship

Linux 서버 SSH

항목추천비고
bash어디나 깔려 있다
Multiplexertmux거의 어디나 깔려 있다
유틸apt-get으로 ripgrep·fd·bat 정도만너무 많이 깔면 운영 부담

Windows

항목추천대안
에뮬레이터Windows TerminalWezterm·Tabby
PowerShell 7WSL + bash/zsh
프롬프트oh-my-poshstarship

속도 우선

  • 에뮬레이터: Alacritty 또는 Ghostty
  • : zsh (간소화된 설정) 또는 fish 4
  • 프롬프트: starship (또는 아예 단순 PS1)
  • 금기: Electron 기반 터미널(Hyper·Tabby) — 입력 지연.

디자인 우선

  • 에뮬레이터: Ghostty (네이티브 GUI), Warp (가장 다듬어진 UI)
  • 폰트: JetBrains Mono / Fira Code / IBM Plex Mono / Berkeley Mono (유료)
  • 테마: Gruvbox / Catppuccin / Tokyo Night / Rose Pine

에필로그 — 터미널은 한 번 더 흥미로워졌다

2014년에 "터미널 무엇 쓰세요"라고 물으면 답은 두 개였다 — iTerm2 또는 GNOME Terminal. 셸은 bash 또는 zsh. multiplexer는 tmux. prompt는 oh-my-zsh의 어떤 테마.

2026년 같은 질문을 던지면 답이 다섯 개씩 나온다. Ghostty·Wezterm·Alacritty·Kitty·Warp. zsh·fish 4·nushell·bash·elvish. tmux·Zellij. starship·p10k·oh-my-posh.

그 다양성을 만든 건 세 가지 흐름이다:

  1. Rust 재작성 — 시스템 소프트웨어를 Rust로 다시 쓰는 흐름이 셸·유틸·multiplexer 모두에 도달했다.
  2. 개인 풀타임 작품의 부활 — Mitchell Hashimoto의 Ghostty처럼, "회사 떠나 2년 풀타임"이 가능한 시대다.
  3. AI 통합 — Warp가 가장 야심차지만, Cursor·Claude Code·Cline 같은 도구들도 셸과 터미널 경계를 흐리게 만든다.

이 글이 당신의 셋업을 한 번 다시 보게 만들었기를. 모든 것을 바꿀 필요는 없다. 에뮬레이터 한 번, prompt 한 번, 그리고 ripgrep·fzf·zoxide·atuin 정도만 깔아도 일상 셸 작업이 다른 차원이 된다.

14개 항목 체크리스트

  1. 에뮬레이터를 Ghostty/Wezterm/Warp 중 하나로 갈아엔다.
  2. 셸 rc 파일을 정리하고 starship을 깐다.
  3. Powerlevel10k에서 starship으로 옮긴다(이미 p10k면 선택).
  4. ripgrep을 깔고 grep을 잊는다.
  5. fd를 깔고 find를 잊는다.
  6. fzf를 깔고 셸 통합을 켠다(Ctrl-R이 바뀐다).
  7. zoxide를 깔고 cd를 alias한다.
  8. bat를 깔고 cat을 alias한다.
  9. eza를 깔고 ls를 alias한다.
  10. atuin을 깐다(필요하면 sync는 self-host).
  11. tmux 또는 Zellij에서 본인 워크플로 한 가지 선택.
  12. dotfiles 저장소를 만들고 chezmoi 또는 git bare repo로 관리.
  13. 폰트를 Nerd Font 변형으로 바꾼다(starship 아이콘이 보임).
  14. WSL 또는 컨테이너에 같은 셋업을 한 번 더 깐다 — 어디서나 똑같이 일하게.

안티패턴 10가지

  1. Hyper를 새로 깐다 — 느리다. 다른 옵션이 있다.
  2. oh-my-zsh를 모든 플러그인 켜고 깐다 — 셸 시작이 느려진다.
  3. tmux 설정을 1000줄로 만든다 — 본인도 6개월 후 못 읽는다.
  4. p10k를 새로 깐다 — starship으로 가라.
  5. nushell을 server 자동화 스크립트에 쓴다 — 0.x 버전이라 깨질 위험.
  6. Warp만 깔고 다른 옵션은 안 본다 — 클라우드 의존이 매년 더해질 수 있다.
  7. zsh + bash + fish를 동시에 메인으로 쓴다 — rc 파일이 세 벌이 된다. 하나로 정한다.
  8. dotfiles 없이 새 머신을 셋업한다 — 30분짜리 일을 3시간으로.
  9. atuin을 깔고 sync를 검토 안 한다 — 명령어 히스토리가 클라우드에 가있다.
  10. Ghostty가 처음 출시되자마자 회사 전체 표준으로 강요한다 — 1년 정도 기다리고, 본인 머신에서 충분히 검증부터.

다음 글 예고

  • "dotfiles 관리 — chezmoi vs Nix vs git bare repo vs Stow 비교."
  • "Nerd Fonts·프로그래밍 폰트 2026 — JetBrains Mono · Berkeley Mono · MonoLisa · Comic Code 비교."
  • "tmux 30분 마스터 — 신규 사용자를 위한 최소 설정."

참고 / References