ps1 提示符应兼顾信息性、响应速度与兼容性:优先用 shell 内置判断减少延迟,ansi 色彩代码须用 [ ] 包裹并重置,多行结构分层展示关键信息,推荐 tput 实现跨终端兼容配色。

PS1 提示符不只是“用户@主机:路径$”,它能成为你终端里的信息中枢和视觉助手。关键不在堆砌功能,而在让每段内容都可读、可靠、不拖慢输入体验。
显示动态状态而不卡顿
每次敲命令前都要执行耗时命令?会明显感知延迟。优先用 Shell 内置判断替代外部调用:
- 检查 Git 分支:用
[ -d .git ] && git branch --show-current 2>/dev/null,比git rev-parse --abbrev-ref HEAD更轻量 - 显示上条命令退出码:用
$([ $? -eq 0 ] && echo "\[\033[32m\]" || echo "\[\033[31m\]"),直接响应,无子进程开销 - 区分本地/远程环境:用
[ -n "$SSH_CLIENT" ] && echo "(ssh)" || echo "(local)",避免调用 hostname 或 whoami
颜色与宽度必须匹配
Shell 需要准确知道提示符里哪些字符“不占位宽”(比如颜色代码),否则光标会错位、换行异常、补全失效。所有 ANSI 序列必须用 \[ 和 \] 包裹:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- ✅ 正确:
\[\033[32m\]\u\[\033[0m\]@\h:\W\$ - ❌ 错误:
\033[32m\u\033[0m@\h:\W\$(Shell 会把 \033 当作可见字符计数) - 重置色不能省:
\[\033[0m\]必须放在每段着色结尾,否则后续输入文字也带色
结构清晰比炫酷更重要
多行提示符不是为了好看,而是为信息分层。适合高分辨率终端或复杂工作流:
- 第一行放身份与时间:
\[\033[1;36m\]\t\[\033[0m\] \[\033[1;32m\]\u\[\033[0m\]@\[\033[1;34m\]\h - 第二行专注路径与状态:
\[\033[1;33m\]\w\[\033[0m\]\[\033[35m\]$(__git_ps1 " (%s)")\[\033[0m\] - 第三行只留符号:
\n\$(注意 \n 后有空格,避免符号紧贴命令)
跨终端兼容的配色方案
硬写 \033[32m 在某些终端(如旧版 tmux 或 minimal BusyBox shell)可能失效。更稳妥的做法是用 tput:
- 在
~/.bashrc中定义:GREEN=$(tput setaf 2); BOLD=$(tput bold); RESET=$(tput sgr0) - 组合使用:
PS1="${BOLD}${GREEN}\u${RESET}@${GREEN}\h${RESET}:\w\$ " -
tput会根据$TERM自动降级(比如在不支持颜色的环境里输出空字符串)










