\w 有时看似路径不全,实因将家目录自动缩写为~(如/home/alice/project/src显示为~/project/src);要强制显示无缩写的绝对路径,须用$(pwd)替代\w,因其绕过缩写逻辑且实时更新。

Ubuntu 默认的 \w 已经显示完整路径深度,但常因家目录缩写(~)或终端宽度限制造成“看似不全”的错觉——真正要的是去掉缩写、强制显示绝对路径、保留所有层级。
为什么 \w 有时看起来没显示完整路径?
因为 \w 会自动把当前用户家目录替换成 ~,例如 /home/alice/project/src 显示为 ~/project/src。这不是“深度不够”,而是路径规范化行为。如果你需要纯绝对路径(如 /home/alice/project/src),\w 本身做不到——它就是设计成带 ~ 缩写的。
-
\w:显示带~缩写的完整路径(推荐用于日常,避免过长) -
\W:只显示 basename(即最后一级目录名),完全丢弃深度 - 没有内置转义符能直接输出“无缩写绝对路径”——必须靠 shell 命令拼接
用 $(pwd) 替代 \w 强制显示完整绝对路径
在 PS1 中嵌入命令替换,绕过 \w 的缩写逻辑:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
PS1='${debian_chroot:+($debian_chroot)}\u@\h:$(pwd)\$ '
- 每次提示符刷新时执行
pwd,返回当前工作目录的绝对路径(无~) - 注意:不要加引号包裹
$(pwd),否则会静态求值一次,后续 cd 不更新 - 如果终端支持,可搭配颜色控制,例如:
PS1='\[\033[01;34m\]$(pwd)\[\033[00m\]\$ ' - 性能影响极小——
pwd是轻量系统调用,现代终端每秒刷新几十次也无压力
兼容性与易踩的坑
直接写 $(pwd) 看似简单,但 Bash 启动初期环境可能未就绪,导致首次提示符为空或报错:
- 确保
PS1定义放在~/.bashrc中靠后位置(比如在color_prompt判断块之后) - 避免在
if [ "$color_prompt" = yes ]; then块外直接裸写$(pwd),否则非彩色模式下可能因未定义变量出错 - 如果使用
tmux或远程 SSH,确认pwd返回路径与预期一致(一般没问题) - 别用
`pwd`反引号语法——已过时,且容易与单引号冲突;坚持用$(pwd)
真正麻烦的不是怎么写,而是忘了 source ~/.bashrc 让改动生效,或者改完发现提示符里多了个空格/换行——那大概率是引号或转义没配对。多试两次 echo "$PS1",比猜快得多。










