今天把同一套 prompt 鋪到兩台 VPS,一台要先裝 zsh,另一台只需要 git clone oh-my-zsh。事情不難,但操作完坐在那邊看到兩台機器跑出同一個 prompt,有點好笑又有點踏實。
每天要住在裡面的地方,值得佈置。
好看不只是好看
agnoster 讓 prompt 帶了幾樣東西:
- 當前 git 分支——不用跑
git branch,看 prompt 就知道在哪 - working tree 狀態——有未 commit 的改動,prompt 顏色變化,commit 完恢復乾淨
- 縮短路徑——複雜的絕對路徑自動折疊,不佔整行
這些不是裝飾,是資訊密度。在同時跑多台機器的時候,看到一樣的 prompt 還有另一個好處:降低 context switch 的摩擦。切到新機器,腦袋不用多花一秒適應。
一個關於字型的常見誤解
agnoster 的箭頭、符號(⮀、⭠ 等)是 Powerline 字型,渲染在 terminal client,不是在 shell。
所以:
- Mac 的 iTerm2、Ghostty、Terminal.app——在這裡裝字型
- 透過 SSH 進去的 VPS——不需要在 server 上裝字型,server 只負責輸出字符,視覺渲染在你這端
- 如果在 VPS 上看到亂碼方塊,問題在本機 terminal 的字型設定,不在 server
核心設定
以下是精簡版 .zshrc(私有路徑、工具別名等拿掉,保留架構部分):
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="agnoster"
# 設了 DEFAULT_USER,在自己帳號下 prompt 不顯示 user@host
DEFAULT_USER="$USER"
plugins=(git)
source $ZSH/oh-my-zsh.sh
# ─── 個人擴充 ────────────────────────────────────────
export PATH="/opt/homebrew/bin:$PATH"
export PATH="$HOME/.local/bin:$PATH"
# 常用目錄別名(路徑換成自己的)
alias project='cd $HOME/path/to/project'
# 一鍵開發環境
alias dev='tmux new-session -As dev -c $HOME/path/to/project "pnpm dev"'
plugins=(git) 載入後,gst(git status)、gco(git checkout)、gcm(git commit -m)等縮寫直接可用。
沒有 root 的 VPS
chsh 需要 root 才能改預設 shell。沒有 root 時,在 .bashrc 最尾端加:
exec zsh -l
登入時 bash 啟動,最後這行跳進 zsh。效果跟改預設 shell 一樣,不需要 root。
Powerline 字型選一個裝上去,ZSH_THEME 設 agnoster,其餘的 oh-my-zsh 幫你做完。