背景
最近,我给家里的 home server 重装了操作系统,从带 GUI 的 Arch 迁移到了无 GUI 的 Debian。原因是 Arch 更新实在是太频繁了,而且前几周刚发生了一次 grub 更新导致卡 boot(见 Latest grub bricked my system (grub_is_shim_lock_enabled not found))。
在安装过程中,我已经在 Graphical expert install 中选择了简体中文语言及 UTF-8 编码(即 zh_CN.UTF-8
),但使用 root 身份通过 SSH 连接时,屏幕上的输出语言仍然是英语,LANG
及 LANGUAGE
环境变量的值甚至不是诸如 en_US.UTF-8
的正常英文环境值,而是 C
。
解决方案
我首先执行了 dpkg-reconfigure locales
命令,发现已选区域设置正是 zh_CN.UTF-8
,说明问题不在这里。然后我尝试重新安装 locales
并额外安装 locales-all
软件包,然后再重新生成区域设置文件,但问题依旧。我甚至尝试了选择 en_US.UTF-8
的区域设置,但 LANG
及 LANGUAGE
环境变量的值仍然是 C
。真是 confusing。
后来,一次偶然的机会我看了看 .profile 文件,发现末尾赫然显现这五行英文:
# Installed by Debian Installer:"
# no localization for root because zh_CN.UTF-8"
# cannot be properly displayed at the Linux console"
LANG=C
LANGUAGE=C
不无道理,但你是不是太瞧不起 UTF-8 和 modern Linux console 了?删掉末尾这两行后再重新登录,能正常显示中文了。