涉及的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命令
6.xshell中prompt和ubuntu cli模式下的prompt的颜色变的和ubuntu图像用户界面的颜色一致了!


五、另外一种方法
修改.bashrc第46行左右
| # 下面这行注释的 |
| # force_color_prompt=yes |
{{uploading-image-256174.png(uploading...)}}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!