linux中修改PS1变量解决shell命令提示符太长

原文地址:https://www.cnblogs.com/liqinglucky/p/PS1.html

在使用linux时,当我的文件目录很深的时候,前面的命令提示符太长会导致后面输入不方便。于是就想能不能不显示全路径名,只保留显示最后一个目录就可以。

root@ubuntu:/home/ubuntu/Documents/Files/Music#

研究发现shell中PS1变量决定了命令提示符的显示。可以通过设置PS1变量来改变显示效果[1] [2]

一、PS1变量

1.1 PS1变量

PS1变量的参数的含义:

\d:显示曰期,格式为"星期 月 日"。
\D: 显示自定义时间,如\D{%Y-%m-%d}。
\H:显示完整的主机名。如默认主机名"localhost.localdomain"。
\h:显示简写的主机名。如默认主机名"localhost"。
\t:显示 24 小时制时间,格式为"HH:MM:SS"。
\T:显示 12 小时制时间,格式为"HH:MM:SS"。
\A:显示 24 小时制时间,格式为"HH:MM"。
\@:显示 12 小时制时间,格式为"HH:MM am/pm"。
\u:显示当前用户名。
\v:显示 Bash 的版本信息。
\w:显示当前所在目录的完整名称。
\W:显示当前所在目录的最后一个目录。
\#:执行的第几条命令。
\$:提示符。如果是 root 用户,则会显示提示符为"#";如果是普通用户,则会显示提示符为"$"。

1.2 查看PS1变量

# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

所以只要将\w改成\W就可以达到我想要的显示效果。

二、设置PS1变量

方案1:PS1变量赋值

最快方法的就是直接给PS1变量赋值

//注意赋值时等号左右两边不能有空格
root@ubuntu:/home/ubuntu/Documents/Files/Music# PS1='\u@\h:\W\$'
root@ubuntu:Music#

可以看到赋值后,显示效果变为了只显示最后一个目录。
但这个设置只是临时的,系统重启后设置就被重置了。

方案2:修改配置文件中PS1的赋值

为了使PS1的赋值永久生效,可以修改配置文件中PS1的赋值语句。于是要先找到PS1赋值的配置文件。

linux环境变量的加载顺序[3]

  1. /etc/environment
  2. /etc/profile
  3. /etc/bashrc/etc/bash.bashrc
  4. /etc/profile.d/test.sh
  5. ~/.profile
  6. ~/.bashrc

.bashrc/etc/bash.bashrc都可以看到PS1的变量的赋值语句。我们就只要修改任意一个文件中的PS1的语句就行。

1 修改配置文件

# vim ~/.bashrc
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\$ '   # \w 改为\W
fi

2 配置文件生效

可以通过系统重启或者source命令使配置文件生效。

root@ubuntu:/home/ubuntu/Documents/Files/Music# source ~/.bashrc
root@ubuntu:Music#

可以看到新的显示效果已经生效!

参考


  1. Shell 提示符PS1变量颜色设置 ↩︎

  2. linux shell命令提示符号PS1设置 ↩︎

  3. linux 环境变量_linux中/etc/bashrc怎么生效-CSDN博客 ↩︎

posted @ 2024-02-24 13:19  liqinglucky  阅读(537)  评论(0编辑  收藏  举报