当我切换至root用户时,发现命令提示符里的内容全部为白色,如图所示:
这让人看着不愉快,上网先搜索下解决方案:【切换到 root 账户字体全是白的,怎么改颜色啊】- 百度贴吧,但是这个解决方案只是部分起效,并且也不够优雅,关闭终端效果又打回原形,甚至有些解决方案直接将普通用户的.bashrc
文件覆盖掉root用户的.bashrc
:【Linux切换到root用户后终端字符没有颜色】,这不是一个好的做法,虽然我没有验证过,但一个系统的文件之所以那样写肯定是有其原因的,为了解决一个终端命令提示符颜色问题而做如此不谨慎的改动,可能是捡了芝麻丢了西瓜。
我参考了这篇文章:【How do I change the color of the prompt in Ubuntu terminal after using sudo su?】,配置方法如下:
(1)sudo su root
切换至root用户。
(2)vim ~/.bashrc
编辑root家目录下的.bashrc
文件。
(3)找到#force_color_prompt=yes
的被注释项,去掉此注释,强制要求颜色提示,这个变量上面有Ubuntu开发者的注释说明,开发者认为关闭颜色提示是为了不分散用户的注意力,Terminal窗口的重点应该是命令的输出,而不是提示符本身,恕我难以苟同,追求一点艺术美感会更好的让用户集中注意力,好的设计本身就要能引导用户,对我而言,关闭颜色提示会显得这条命令与整体的Terminal终端环境格格不入,有一种出戏感。
uncomment for a colored prompt, if the terminal has the capability; turned off by default to not distract the user: the focus in a terminal window should be on the output of commands, not on the prompt —— force_color_prompt变量的注释说明
(4)找到以下代码片段
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\$ '
fi
并将用户的颜色从绿色01;31m
修改为红色01;32m
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
这些参数具体所代表的含义如下:
参数值 | 含义 |
---|---|
${debian_chroot:+($debian_chroot)} | 【chroot - Debian Wiki】 【What is $debian_chroot in .bashrc?】 【What does “${debian_chroot:+($debian_chroot)}” do in my terminal prompt?】 |
\[\033[01;31m\] | \[ 代表[本身,使用了转义符\033[ 是转义序列的开始01;31m 分别代表亮度级别;颜色\] 代表]本身 |
保存退出,并执行source ~/.bashrc
使命令生效,最终,达到的是这种效果,左边是普通用户,右边是root用户,在root权限下不仅警示性强,还兼具美感: