Prompt 가 사실 뭐야?
Prompt 는 매 입력 전에 shell 이 출력하는 문자열 일 뿐이야. bash 는 $PS1 에, zsh 는 $PROMPT (또는 $PS1) 에 저장돼. 그냥 텍스트에 escape code 가 섞인 거고, shell 이 매번 evaluate 해서 출력해. 그래서 좋은 prompt 는 거의 다 escape 몇 글자 조합이야 — 플러그인이 아니라.
자주 보는 escape code
%n/\u— 사용자 이름%m/\h— short host name%~/\w— 현재 디렉터리 (홈은~)%?/$?— 직전 command 의 exit code%F{red}/\[\033[31m\]— 색 시작 (zsh / bash)%f/\[\033[0m\]— 색 reset
남의 .zshrc 에서 PROMPT='%F{cyan}%n%f@%m %~ %F{red}%(?..%?)%f%# ' 같은 거 보면, 해석은 — cyan 사용자명, 호스트, 작업 디렉터리, exit code 가 0 아닐 때만 빨간색으로 표시, 그리고 prompt 글자.
Multi-line / Right prompt
Prompt 를 두 줄로 나눠서 command 입력은 항상 왼쪽 끝에서 시작하게 만들 수 있어. PROMPT 끝에 $'\n' 넣고 마지막 줄을 짧은 glyph 로 둬. zsh 의 RPROMPT 는 같은 줄 오른쪽 에 출력 — git branch 같은 정보를 입력 영역 밀지 않게 보여줄 때 좋아.
직접 안 쓰고 받아쓰는 prompt
Escape code 하나하나 외울 필요 없어. Powerlevel10k (zsh 전용) / Starship (아무 shell) 이 git status, Python venv, Node 버전, Kubernetes context, AWS profile, 직전 명령 실행 시간까지 빠르고 비동기로 그려줘. 직접 쓰는 게 취미 아니면 Starship 깔고 넘어가.