SSH 連線時自訂 PS1 提示符 (Ubuntu為例)
以 Ubuntu 預設彩色提示符為例
方式一:臨時一次性使用(連線後手動執行)
連線進去後,直接在終端機貼上執行:
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
說明:
- 只對當前 session 有效,登出後就消失
- 不需要任何設定檔修改
- 適合臨時想換個提示符樣式試試看
方式二:修改遠端伺服器設定
在遠端伺服器的 ~/.bashrc 加入:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
優點:
- 不影響 scp/rsync 等檔案傳輸功能
- 所有連線方式都自動套用
- 不用記複雜的命令
- 最簡單、最推薦的做法
方式三:連線時指定命令(命令列參數)
每次連線時加上參數:
ssh myserver -t 'export PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "; exec bash'
說明:
-t— 等同於RequestTTY yes,強制分配 TTY- 單引號包住整個命令,避免本地 shell 先展開變數
- 適合偶爾需要或寫成別名使用
方式四:寫在 SSH Config 中(本地端設定)
在本地的 ~/.ssh/config 中設定:
Host myserver
HostName example.com
User ubuntu
RequestTTY yes
RemoteCommand bash -c 'export PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "; exec bash'
說明:
RequestTTY yes— 強制分配終端,否則 RemoteCommand 無法正常互動RemoteCommand— 連線後自動執行的命令,用exec bash確保留在互動式 shell- 連線方式:直接
ssh myserver
注意事項:
- 使用 RemoteCommand 後,
scp、rsync等檔案傳輸會失效(因為它會執行指定命令而非預設 shell) - 如果需要傳檔案,要另外建一個不帶 RemoteCommand 的 Host 設定
補充:PS1 提示符格式說明
對照格式
\[\033[01;32m\] → 亮綠色開始
\u → 使用者名稱
@ → @ 符號
\h → 主機名稱
\[\033[00m\] → 重設顏色
: → : 符號
\[\033[01;34m\] → 亮藍色開始
\w → 當前完整路徑
\[\033[00m\] → 重設顏色
\$ → 一般用戶顯示 $,root 顯示 #












