如何让Bash的PS1会话始终显示完整的PWD路径?
让PS1始终显示完整工作路径的解决方法
这个问题很常见——默认bash提示符里的\w转义字符会自动把你的主目录缩写成~,要让它不管在哪个目录(包括主目录)都显示完整的绝对路径,只需要调整.bashrc里的PS1配置就行,具体步骤如下:
核心修改思路
把PS1中负责显示路径的\w(普通用户)和\W(root用户,仅显示当前目录名)替换成\$PWD——$PWD是bash内置的环境变量,始终存储当前工作目录的完整绝对路径,而\$的作用是让这个变量在每次显示提示符时都重新展开,保证路径是最新的。
修改后的完整.bashrc片段
if [ "$color_prompt" = yes ]; then if [[ ${EUID} == 0 ]] ; then # 可选:如果root也需要完整路径,就把\W换成\$PWD;如果仍想让root只显示当前目录名,保留\W即可 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \$PWD \$\[\033[00m\] ' else # 普通用户替换\w为\$PWD,强制显示完整路径 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\$PWD \$\[\033[00m\] ' fi else # 无颜色模式下同样替换\w为\$PWD PS1='${debian_chroot:+($debian_chroot)}\u@\h \$PWD \$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) # 终端标题也同步替换成完整路径,可选操作 PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \$PWD\a\]$PS1" ;; *) ;; esac
生效方法
修改完.bashrc后,在终端执行以下命令让修改立即生效:
source ~/.bashrc
补充说明
- 如果你只想让普通用户显示完整路径,root保持原来的仅显示目录名,那只需要修改普通用户分支里的
\w,root分支的\W保留不动就行。 \$PWD和直接写$PWD的区别:直接写$PWD会在你设置PS1的时候就把路径固定下来,后续切换目录时提示符不会更新;而\$PWD会每次显示提示符时重新读取PWD变量,保证路径始终和当前目录一致。
内容的提问来源于stack exchange,提问作者Vlastimil Burián
相关产品推荐
相关产品推荐

