G
N
I
D
A
O
L

AIGC标识 Linux配置 - 终端修改显示路径

需求背景:
Ubuntu 22.04.5 LTS
linux默认的终端路径是完成路径,这导致项目路径比较长或者名称比较长就会显得极其痛苦
例如,最近做的rust-100练习,~/39Study/RustWorkSpace/100-exercises-to-learn-rust(基本占了终端窗口一大半)

前置知识

  • 在 Linux 中,终端显示的路径是通过环境变量 PS1 来控制的
  • 有很多linux发行版本默认的Shell已经是Zsh,但网上搜索很多办法还是修改Bash的配置文件
    • 排查:在终端运行echo $SHELL
      • 如果输出 /bin/bash,说明是 Bash,去修改 ~/.bashrc文件
      • 如果输出 /bin/zsh,说明是 Zsh,去修改 ~/.zshrc 文件

办法

临时修改(当前窗口)

export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

(❗注意:大写W)

永久生效(修改配置文件)

  1. shell 配置文件(通常是 ~/.bashrc,如果你用 zsh 则是 ~/.zshrc):
vim ~/.bashrc
  1. 找到控制 PS1 的那一行(通常包含 \w),将其中的小写 \w 改为大写 \W
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

(和上面一样,修改为大写W)
3. 让配置生效即可source ~/.bashrc

万金油通用方法

有的终端框架或者美化主题会强制覆盖PS1设置(例如:Oh My Zsh),不想烧脑一个个配置项的去找,可以直接在文件最末端强制重写

❗补充:Zsh 中通常用 PROMPT 或 PS1,且路径简写符号略有不同,Zsh 里只显示最后一级目录通常用 %1~ 或 %c(核心!相当于 Bash 的 \W

补充:

20年之前的博客文章很多提到修改:
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '
这种做法目前过时,因为现在配置文件增加了满足颜色条件判断
例如在Ubuntu24中配置如下:

// 支持彩色条件
if [ "$color_prompt" = yes ]; then

    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

else
// 不支持
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

fi

unset color_prompt force_color_prompt

在 Linux/Bash 的默认配置文件(如 Ubuntu 的 .bashrc)中,系统会通过一段代码来检查当前的终端窗口支不支持显示颜色
这样的做法主要是老旧终端兼容/精简环境不支持颜色,硬塞带颜色控制代码(例如\033[01;32m]),终端无法识别就会打印出乱码
大部分人使用的终端还是支持带颜色,所以 "$color_prompt" = yes,主分支支持带颜色;即修改主分支的w为大写W

附录

常用Bash环境配置默认的特殊符号所代表的意义:

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"

\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略

\t :显示时间为24小时格式,如:HH:MM:SS

\T :显示时间为12小时格式

\A :显示时间为24小时格式:HH:MM

\u :当前用户的账号名称

\v :BASH的版本信息

\w :完整的工作目录名称。家目录会以 ~代替

\W :利用basename取得工作目录名称,所以只会列出最后一个目录

# :下达的第几个命令

$ :提示字符,如果是root时,提示符为:# ,普通用户则为:

posted @ 2026-08-09 19:21  Bingo39  阅读(7)  评论(0)    收藏  举报