Linux终端提示符PS1设置

2022-06-04  本文已影响0人  春风花草

linux终端提示符默认如下显示效果

[root@localhost cc51a85cd8e1a61f8b2f8955c5593849e7264bcf58f874b0cbf6e852d71638ee]#

这里主要想在终端提示这里看到登录用户服务器ip绝对路径,如下显示:

root@xxx.xxx.xxx.xxx:/var/lib/docker/containers$

这里主要通过PS1变量来进行设置

PS1:linux终端提示符,linux的内置变量

ps1默认为[\u@\h \W]\$
各提示符的含义如下:

\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"   
\H :#完整的主机名称。   
\h :#仅取主机的第一个名字。 
\t :#显示时间为24小时格式,如:HH:MM:SS   
\T :#显示时间为12小时格式   
\A :#显示时间为24小时格式:HH:MM   
\u :#当前用户的账号名称   
\v :#BASH的版本信息   
\w :#完整的工作目录名称。家目录会以 ~代替   
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录 
\# :#下达的第几个命令   
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$  

由此可知,默认显示当前用户、主机的第一个名字、当前工作目录
可以将PS1修改为如下:

export PS1="\[\e[33;1m\]\u\[\e[31;1m\]@\[\e[33;1m\]\H:\[\e[36;1m\]\w\[\e[34;1m\]\$ \[\e[0m\]"

上面还包含提示符颜色的设置,具体可以参考PS1设置

如果想PS1的设置永久有效,可以在/etc/profile或.bashrc文件里进行设置,然后打开一个新的终端就会看到新设置的提示符生效了。
但是这里可能会发现,主机名显示的不是ip,显示如下:

root@localhost.localdomain:/var/lib/docker/containers$

原因是这里的hostname不是ip

root@localhost.localdomain:/var/lib/docker/containers$ hostname
localhost.localdomain

因为需要修改hostname,提供一个快速永久修改hostname的方法

root@localhost.localdomain:/var/lib/docker/containers$ hostnamectl set-hostname 172.16.81.97
root@localhost.localdomain:/var/lib/docker/containers$ hostname
172.16.81.97

这时hostname就改成主机的ip了,
重新打开终端后就变成了想要的终端提示符

root@172.16.81.97:/var/lib/docker/containers

有人会想这样显示会有什么好处:

  1. 通过该终端提示符,可以很清楚的知道打开该终端的用户、主机地址和工作目录
  2. 如果用过scp命令,会不会觉得跟它的格式一模一样,方便复制

更进一步的,会不会还有PS2、PS3呢?

关于linux的PS2、PS3、PS4可以参考linux下PS1、PS2、PS3、PS4最全详解

上一篇下一篇

猜你喜欢

热点阅读