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)
永久生效(修改配置文件)
- shell 配置文件(通常是
~/.bashrc,如果你用 zsh 则是~/.zshrc):
vim ~/.bashrc
- 找到控制
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时,提示符为:# ,普通用户则为:

需求:linux 终端默认显示完整路径,占据了对话栏大部分位置
操作:通过修改配置文件的方式,可达到只显示当前项目名称/当前用户的账号名称/主机名/时间等的效果
额外补充配置环境常用符号
浙公网安备 33010602011771号