在XShell中的提示符(prompt)没有颜色

发布时间 2023-08-28 12:11:23作者: Guanjie255

涉及的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

6.xshell中prompt和ubuntu cli模式下的prompt的颜色变的和ubuntu图像用户界面的颜色一致了!