直接修改/etc/locale.conf可生效,但须先确认系统已安装zh_CN.UTF-8 locale(通过locale -a|grep zh_CN.UTF-8验证),否则会静默回退至英文;推荐使用sudo localectl set-locale LANG=zh_CN.UTF-8自动写入并同步systemd环境。

直接改 /etc/locale.conf 就能生效,但必须确认系统已安装 zh_CN.UTF-8 locale,否则会 fallback 到英文且无提示。
检查系统是否支持 zh_CN.UTF-8
很多用户执行完修改就重启,发现还是英文——根本原因是系统压根没装中文 locale。先验证是否存在:
- 运行
locale -a | grep zh_CN.UTF-8,有输出才说明已安装; - 若无输出,
sudo yum groupinstall "Chinese Support" -y是最稳妥的安装方式(比单独装kde-l10n-Chinese更全,含字体、输入法框架基础); - 注意:
yum install glibc-common不能替代语言包,它只提供 locale 生成工具,不带翻译资源。
永久修改 LANG 变量(推荐用 localectl)
直接编辑 /etc/locale.conf 虽然有效,但容易漏掉 systemd 的 locale 同步机制。用 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会自动写入/etc/locale.conf并刷新 systemd 环境; - 执行后立即生效于新启动的 systemd 用户会话(如 GNOME 登录),但当前终端 shell 不变,需新开 terminal 或重新登录;
- 避免设置
LC_ALL——它会强制覆盖所有LC_*变量,导致时间/货币格式异常,除非你明确需要全局统一。
图形界面 vs 终端显示不一致怎么办
常见现象:GNOME 菜单是中文,但终端里 ls 报错仍是英文,或中文文件名显示为 ???。这不是配置失败,而是 shell 环境未继承:
- 检查当前 shell 的
LANG:运行echo $LANG,应输出zh_CN.UTF-8; - 如果输出是
en_US.UTF-8或为空,说明用户级配置被覆盖,检查~/.bashrc或~/.profile是否有硬编码的export LANG=en_US.UTF-8; - TTY(Ctrl+Alt+F2)默认不读取
/etc/locale.conf,需额外在/etc/vconsole.conf中加KEYMAP=us和FONT=latarcyrheb-sun16(仅影响字符终端中文显示,非必需)。
真正容易被忽略的是:locale 生效依赖完整链路——语言包安装 → /etc/locale.conf 写入 → 用户 shell 环境继承 → 应用程序本身支持 locale。任一环节断开,都会出现“部分中文、部分英文”的割裂感。

















