解决bash终端的路径名称乱码问题

解决bash终端的路径名称乱码

默认打开了zsh,当我输入bash后,就出现了乱码

bash 复制代码
(context_rag) [23fanyao@head1]~/mycode-thesis% bash
(context_rag) [%n@%m]%~%#

乱码原因排查

我遇到了终端乱码问题,需要检查当前的终端环境和编码设置,下面是我的检查过程

  1. 终端输入:locale

系统的locale设置看起来正常,都是UTF-8编码。

  1. 再检查一下终端的字符编码设置和环境变量。

mycode-thesis 终端

bash 复制代码
echo $TERM && echo $LANG && echo $LC_ALL 

环境变量看起来正常。

  1. 检查一下Python的默认编码设置,因为可能在运行Python脚本时遇到乱码问题。在终端中输入:
bash 复制代码
python3 -c "import sys; print('Python version:', sys.version); print('Default encoding:', sys.getdefaultencoding()); print('File system encoding:', sys.getfilesystemencoding()); print('Stdout encoding:', sys.stdout.encoding)"

Python编码设置也是正常的。

  1. 检查一下的shell配置文件,看看是否有特殊的编码设置或别名导致乱码。
bash 复制代码
echo $SHELL && cat ~/.bashrc | grep -i 'lang\|locale\|encoding' || echo 'No encoding settings found in .bashrc'
  1. 检查一下当前的终端提示符设置,因为我注意到提到的乱码可能与PS1提示符有关。(查询结果如上图)
bash 复制代码
echo "Current PS1: $PS1"

最终!!!我发现了乱码问题的原因:原来是终端提示符(PS1)使用了zsh风格的变量格式(%n、%m、%~、%#),但当前使用的是bash shell,这导致这些变量无法正确解析。

解决方案:

  1. 临时修复 (当前会话有效):
bash 复制代码
export PS1='(context_rag) [\u@\h]\w\$ '
  1. 永久修复 (添加到~/.bashrc文件):
bash 复制代码
echo 'export PS1="(context_rag) [\u@\h]\w\$ "' >> ~/.bashrc
source ~/.bashrc

成功解决:

参数名称

变量对照表:

  • zsh的 %n → bash的 \u (用户名)
  • zsh的 %m → bash的 \h (主机名)
  • zsh的 %~ → bash的 \w (当前目录)
  • zsh的 %# → bash的 $ (提示符)
    执行上述命令后,你的终端提示符就会正常显示,不再出现乱码了
相关推荐
gopyer37 分钟前
180课时吃透Go语言游戏后端开发6:Go语言的循环语句
开发语言·游戏·golang·循环语句
楼田莉子3 小时前
Qt开发学习——QtCreator深度介绍/程序运行/开发规范/对象树
开发语言·前端·c++·qt·学习
韩立学长4 小时前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
天若有情6734 小时前
C++空值初始化利器:empty.h使用指南
开发语言·c++
远远远远子4 小时前
类与对象 --1
开发语言·c++·算法
无敌最俊朗@5 小时前
C/C++ 关键关键字面试指南 (const, static, volatile, explicit)
c语言·开发语言·c++·面试
2401_831501735 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
酷~5 小时前
C语言模拟面向对象编程方法之多态
c语言·开发语言
hui函数5 小时前
python全栈(基础篇)——day03:后端内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
开发语言·后端·python·全栈
寻星探路5 小时前
Java EE初阶启程记09---多线程案例(2)
java·开发语言·java-ee