为什么我的“语言环境”不符合默认语言环境?

为什么我的“语言环境”不符合默认语言环境?

在我的 Ubuntu 20.04LTS 系统上,每当我运行locale

$ locale
...
LC_MESSAGES=C
...

尽管我的/etc/default/locale/

$ cat /etc/default/locale
#  File generated by update-locale
LANG="en_US.UTF-8"
...
LC_MESSAGES=en_US.UTF-8

LC_MESSAGES为什么当我通过检查时是“C” locale

答案1

“默认”意味着有其他优先级更高的设置locale优先考虑。

区域设置是不是直接从 /etc/default 读取 - 它仅从环境变量$LC_MESSAGES等中读取,而你正在编辑的文件仅用于设置这些环境变量在登录时。您在 中看到的内容env|grep ^LC或多或少就是 所打印的内容locale

通常,该文件在登录过程的早期就被读取(通过 PAM),因此可以从各种其他来源覆盖生成的环境变量。例如,您可能手动设置了 LC_MESSAGES,或者您的 ~/.bashrc 或 ~/.profile 可能设置了export不同的值,或者您通过 GNOME 登录,它从 GSettings 1检索了每个用户的设置。对于 SSH 连接,如果客户端启用了“SendEnv”,它可能会将客户端$LC_*变量发送到服务器,这将覆盖 PAM 已设置的任何内容。

最后,如果$LC_ALL环境变量恰好被设置(无论它来自哪里),它将优先于全部其他$LC_*设置。


1 dconf-editor org.gnome.system.locale

相关内容