网上类似的文章有很多,但是都是转来转去的,没有经过测试,按照很多文章的方法会造成你设置之后的终端在换行和删除输入字符时终端显示会乱七八糟,于是我重新整理了一下,希望对像我这样的初学者有帮助。
其实就是如何设置PS1变量的问题;
首先我们要知道如下几张表:
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色
1 透明色
代码 意义
-------------------------
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见
序列说明
\a ASCII响铃字符(也可以键入 \007)
\d "Wed Sep 06"格式的日期
\e ASCII转义字符(也可以键入 \033)
\h主机名的第一部分(如 "mybox")
\H主机的全称(如 "mybox.mydomain.com")
\j在此 shell中通过按 ^Z挂起的进程数
\l此 shell的终端设备名(如 "ttyp4")
\n换行符
\r回车符
\s shell的名称(如 "bash")
\t 24小时制时间(如 "23:01:01")
\T 12小时制时间(如 "11:01:01")
\@带有 am/pm的 12小时制时间
\u用户名
\v bash的版本(如 2.04)
\V Bash版本(包括补丁级别) ?/td>;
\w当前工作目录(如 "/home/drobbins")
\W当前工作目录的“基名 (basename)”(如 "drobbins")
\!当前命令在历史缓冲区中的位置
\#命令编号(只要您键入内容,它就会在每次提示时累加)
\$如果您不是超级用户 (root),则插入一个 "$";如果您是超级用户,则显示一个 "#"
\xxx插入一个用三位数 xxx(用零代替未使用的数字,如 "/007")表示的 ASCII字符
\\反斜杠
\[这个序列应该出现在不移动光标的字符序列(如颜色转义序列)之前。它使 bash能够正确计算自动换行。
\] 这个序列应该出现在非打印字符序列之后。
首先我们不考虑添加颜色的问题,首先在 ~/.bashrc文件添加,
export PS1="\u@\h:\w\$"
然后新开一个终端,你看不到和以前有什么区别,因为我们一般系统默认的设置就是这样的,关于\u,\h,\w和\$的含义参见上表,
你可以尝试修改为
export PS1="\u"
export PS1="\h"
export PS1="hello@\u"
其实修改字体颜色的公式很简单为:
PS1=颜色+字符或序列+颜色+字符或序列......
关于颜色的设置它也有一个公式
颜色=\033[代码;前景;背景m
如:\033[1;32;40m表示高亮显示字体为绿色,背景色为黑色
要将全部非打印字符用专用的 bash 转义序列 "\["和 "\]"括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。
这点很关键要不然等你设好了颜色,你的终端换行会乱七八糟
所以我们的颜色需要这样(网上很多文章都漏过了这一步)
颜色=\[\033[代码;前景;背景m\]
做个试验吧
在~/.bashrc中添加
PS1="\[\033[1;32;40m\]\u" 新开终端或者使用命令source ~/.bashrc更新一下变量,效果如下(可能你的背景还为白色,那不要紧后面我会告诉你在哪里设置
你应该看到你的字体是绿色)
我的设置如下:
PS1="\[\033[1;32;1m\][\[\033[0;32;1m\]\u:\[\033[1;35;1m\]\w\[\033[1;32;1m\]]\[\033[1;31;1m\]\$\[\033[1;37;1m\]"
效果图如下:
关于终端背景为白色的问题点击Edit->profiles...设置如下
如果觉得这样设置不好看,你可以自己对着表修改。
另外我使用的是Ubuntu10.1
0在设置PS1变量时,我开始只在/root/.bashrc添加了PS1定义,但是发现只有root用户
终端颜色改变,于是我又在~/.bashrc中添加了PS1变量,这样root用户和一般用户的终端字体才都改过来了,
我在etc/.profile中添加了PS1变量也是不行,很奇怪。所以你最好在/root/.bashrc和~/.bashrc中都添加PS1变量的定义