关于 bash PS1

偏爱 ksh 或其他 shell 的家伙就不要看了,我承认你很个性。

这里有些“高级”工程师、资深 Unix 用户,他们使用 bash 的时候就是一个默认的类似 bash-3.2 $ 的提示符,然后干活的过程中不停的 pwd,pwd,现在我涵养好一些了,不会在旁边看着想楱他两拳了。还有人不用 $ 做提示符,偏用 >,好像他就是个黑客,然后干活的时候敲 whoami(还不是更短的 id)看自己到底是 root 还是普通用户。没错,PS1 是个很个性的东西,但是总得要让自己干活更有效率一点吧?

提示符,起不到提示作用还叫什么提示符?

我的提示符需求:

  • 提示符应该能在一大堆命令输出中容易辨认。用粗体文字显示提示符比用带颜色的好,恰到好处,不喧宾夺主。
  • 应当提示有后台进程。经常在 vim 的时候 ^Z 临时敲命令,完了再 fg 回去。但是经常忘记文件已经在编辑,会再次 vim 打开它,造成一些麻烦。用反显的颜色提示有后台进程不错。 bash 的 PS1 有个 \j 可以输出后台进程的个数,但是我讨厌它输出 0。
  • 经常要复制当前路径、写命令过程,因此提示当前全路径是必须的,另外在这个变态 NFS 网络里面,经常会有很长的路径, $ 提示符有可能跑到屏幕最右边去,命令只好折行了,费眼神。于是让上一行末尾是个表示续行的反斜线,让 $ 和命令始终在新行开始,复制命令过程给别人也方便。

我的配置是这样的:

function job_color {
        [[ -n $(jobs) ]] && echo -e "\e[7m"
}

export PS1='\e[1m\h: \w $(job_color)\\\e[0m\n\$ '

PS1

请 man bash,看 PROMPTING 一节。