PS1 是shell命令行界面的主提示符。
[root@iZ2vceej7yebpm7yec2Z ~]# echo $PS1 [\u@\h \W]\$
这些代表什么意思呢?
"[用户名@简写主机名最后所在目录]提示符"
在 PS1 变量中,如果是可以解释的符号,如"\u"、"\h"等,则显示这个符号的作用;如果是不能解释的符号,如"@“或"空格”,则原符号输出。我们修改一下 PS1 变量,看看会出现什么情况。
[root@localhost ~]# PS1='[\u@\t \w]\$' #修改提示符为'[用户名@当前时间当前所在完整目录]提示符' [root@04:46:40 ~]#cd /usr/local/src/ #切换到当前所在目录,因为家目录是看不出来区别的 [root@04:47:29 /usr/local/src]#
看到了吗?提示符按照我们的设计发生了变化
这里要小心,PS1 变量的值要用单引号包含,否则设置不生效。
再举个例子:
[root@04:50:08 /usr/local/src]#PS1='[\u@ \@ \h \# \W]\$' [root@04:53上午 localhost 31 src]# #提示符又变了。\@:时间格式是HH:MM am/pm;\#:会显示执行了多少条命令
PS1 变量可以自由定制,好像看到了一点 Linux 可以自由定制和修改的影子,还是很有意思的。不过说实话,一个提示符已经使用习惯了,如果换一个还是非常别扭的,还是改回默认的提示符吧,命令如下:
PS1='[\u@\H \W]\$'
注意,这些提示符的修改同样是临时生效的,一旦注销或重启系统就会消失。要想永久生效,必须写入环境变量配置文件。
man bash 可以看到更多参数,你可以自己定义:
当然还有PS2 PS3 PS4 一般来说PS3 和PS4由用户自定义