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]
/etc/environment
/etc/profile
/etc/bashrc
或/etc/bash.bashrc
/etc/profile.d/test.sh
~/.profile
~/.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#
可以看到新的显示效果已经生效!