涉及的Linux知识包括
- 1.login shell与non-login shell
- 2.TERM变量的作用:终端的类型
- 3.PS1变量的作用:设置提示符(prompt)的颜色
一、login shell与non login shell
1.通过xshell这个软件登录ubuntu然后打开的shell的是non-login shell
2.通过ubuntu CLI登录然后打开的shell的是non-login shell
3.通过ubuntu图形界面中的终端打开的shell是login shell
二、是否是login shell导致了TERM变量的不同
1.在xshell中TERM的值
2.在ubuntu CLI界面TERM的值
3.在ubuntu 图形界面TERM的值
三、终端类型不同(TERM变量的值不同)导致了PS1的不同
1.在xshell中PS1的值
2.在ubuntu CLI界面PS1的值
3.在ubuntu 图形界面PS1的值
四、解决问题:linux肯定在某一个文件中根据TERM的不同来设置PS1的值,然后就提示符的颜色就会在不同类型终端的颜色就会不同
1.进入home目录,打开.bashrc文件(一个shell脚本),找到关于TERM, PS1, color的代码
2.这段代码的大致逻辑是
- a.PS1的值取决于变量color_prompt的值
- b.变量color_prompt的值取决于变量TERM的值
3.最核心的代码是上图中的case语句
# 如果TERM的值是xterm-color或者以-256color结尾,那么color_prompt=yes.
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
4.在xshell中打开.bashrc文件并且修改case语句为以下代码
# 如此修改的原因:xshell的TERM的值为xterm, Ubuntu CLI模式下TERM的值为linux
case "$TERM" in
xterm-color|*-256color|xterm|linux) color_prompt=yes;;
esac
5.在xshell和ubuntu cli下均执行source命令
source .bashrc