##PS1是个啥? 鸟哥的书中关于PS1这么说的:
这是 PS1 (数字的 1 不是英文字母),这个东西就是我们的『命令提示字符』喔! 当我们每次按下 [Enter] 按键去运行某个命令后,最后要再次出现提示字符时, 就会主动去读取这个变量值了。上头 PS1 内显示的是一些特殊符号,这些特殊符号可以显示不同的信息, 每个 distributions 的 bash 默认的 PS1 变量内容可能有些许的差异,不要紧,『习惯你自己的习惯』就好了。 你可以用 man bash (注3)去查询一下 PS1 的相关说明,以理解底下的一些符号意义。
总结来说,这个环境变量主要控制这命令提示符(也就是终端里的wgjak47@wgjak47-M410:~$)的样式。 ubuntu下这个变量值默认为\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
而其中{debian_chroot:+($debian_chroot)} 这句的意思是说,如果在/etc下有debian_chroot文件,则命令提示符前面就附加上debian_chroot文件的内容。关于:+这个语法的可以参考:[linux bash shell之变量替换][]
根据man page,PS1的常用的变量值有以下项:
\a 一个 ASCII 响铃字符 (010)
\d 日期,格式是 "星期 月份 日" (例如,"Tue May 26") \D{format} format 被传递给 strftime(3),结果被插入到提示字符串中; 空的 format 将使用语言环境特定的时间格式。花括号是必需的 \e 一个 ASCII 转义字符 (033) \h 主机名,第一个 `.' 之前的部分 \H 主机名 \j shell 当前管理的作业数量 \l shell 的终端设备名的基本部分 \n 新行符 \r 回车 \s shell 的名称, $0 的基本部分 (最后一个斜杠后面的部分) \t 当前时间,采用 24小时制的 HH:MM:SS 格式 \T 当前时间,采用 12小时制的 HH:MM:SS 格式 @ 当前时间,采用 12小时制上午/下午 (am/pm) 格式 \A 当前时间,采用 24小时制上午/下午格式 \u 当前用户的用户名 the username of the current user \v bash 的版本 (例如,2.00) \V bash 的发行编号,版本号加补丁级别 (例如,2.00.0) \w 当前工作目录 \W 当前工作目录的基本部分 ! 此命令的历史编号 # 此命令的命令编号 $ 如果有效 UID 是 0,就是 #, 其他情况下是 $ \nnn 对应八进制数 nnn 的字符 \ 一个反斜杠 [ 一个不可打印字符序列的开始,可以用于在提示符中嵌入终端控制序列 ] 一个不可打印字符序列的结束 通过设置PS1变量可以得到你希望的提示符样式。
更进一步:彩色化 这个其实没什么太大用处,只是让提示符更好看一些。 PS1环境变量支持以下色彩和特效:
颜色表
前景 背景 颜色
30 40 黑色
31 41 红色 32 42 绿色 33 43 黄色 34 44 蓝色 35 45 紫色 36 46 青色 37 47 白色代码 意义
0 OFF
1 高亮显示 4 underline 5 闪烁 7 反白显示 8 不可见
使用方法:
在PS1中配置字符序列颜色的格式为:
[\e[F;Bm]
基本上是夹在 "\e["(转义开方括号)和 "m" 之间数字值。假如指定一个以上的数字代码,则用分号将他们分开。
其中 F 为字体颜色,编号30~37; B 为背景色,编号40~47。
可通过 \e[0m 关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字,请看下面的颜色表和代码表。
例: export PS1="\[\e[32;1m\]\u@\[\e[32;1m\]\H\$ \[\e[0m\]"