LANG设为zh_CN.UTF-8仅是前提,还需确认系统已生成该locale、终端继承设置且避免LC_ALL误覆盖,否则仍会出现菜单中文而ls报错等异常。

LANG 变量设成 zh_CN.UTF-8 就能切中文,但光改这个不够——系统可能压根没装中文语言包,或者终端没继承新设置,结果菜单是中文、ls 报错还是英文。
检查系统是否已生成 zh_CN.UTF-8 locale
直接改配置前先确认系统认不认识这个语言。运行:
locale -a | grep zh_CN.UTF-8
如果没输出,说明 locale 数据库里没有这个条目,后续改 /etc/locale.conf 也没用。
- 没输出就先装语言包:
sudo yum groupinstall "Chinese Support" - 装完再运行
localedef -c -i zh_CN -f UTF-8 zh_CN.UTF-8主动生成 locale(某些最小化安装缺这步) -
locale -a | grep zh_CN应该能看到zh_CN.utf8或zh_CN.UTF-8(大小写敏感,注意匹配你后面要写的格式)
永久修改系统默认语言用 localectl 而不是直接编辑文件
/etc/locale.conf 确实能改,但推荐用 localectl ——它会校验值是否合法,并自动写入正确格式,避免手误写错引号或大小写。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 设为简体中文:
sudo localectl set-locale LANG=zh_CN.UTF-8 - 设为繁体中文:
sudo localectl set-locale LANG=zh_TW.UTF-8 - 执行后立刻生效:
localectl status查看当前设置,locale查看运行时变量 - 不要手动
source /etc/locale.conf——systemd 服务不读这个,重启或新登录才加载
为什么图形界面是中文、终端还是英文?
GNOME/KDE 图形环境有自己的 locale 设置逻辑,它会覆盖 shell 的 LANG,但终端(如 gnome-terminal)启动时不一定继承桌面环境的设置,尤其用 ssh 登录时完全独立。
- 检查
~/.bashrc或/etc/profile.d/lang.sh是否硬编码了LANG=en_US.UTF-8(常见于某些镜像模板) - SSH 登录后运行
locale,如果显示LANG=en_US.UTF-8,说明服务端没把新 locale 传过来,需确认/etc/ssh/sshd_config中有AcceptEnv LANG LC_* - 临时补救:在用户 shell 配置里追加
export LANG=zh_CN.UTF-8,但治标不治本
LC_ALL 是个危险开关,别乱设
有人看到 locale 输出里有 LC_ALL 就想把它也设成中文,这是最常踩的坑。
-
LC_ALL会强制覆盖所有LC_*和LANG,包括LC_CTYPE(影响终端字符渲染)、LC_COLLATE(影响sort排序规则) - 设了
LC_ALL=zh_CN.UTF-8后,sort可能按中文笔画排,而不是 ASCII 顺序,脚本行为突变 - 除非明确需要全局强覆盖,否则只设
LANG,让各子项保持默认或单独配置
source,登出重进或重启一次。最容易被忽略的是:图形界面下打开的终端和 SSH 连接走的是两套环境加载路径,得分别验证。

















