我正在运行 KDE neon 5.20,发现两个文件/etc/locale.conf
内容/etc/default/locale
相似。这两个文件有什么区别,我应该编辑哪一个来更改系统区域设置?
答案1
许多应用软件需要LANG环境变量才能工作。所以大多数发行版都有一个启动脚本来在登录后设置 LANG。
那么启动脚本从哪里读取 LANG 配置呢?发行版之间有所不同,例如
- Debian 默认控制台登录启动脚本读取
/etc/default/locale
- Slackware默认控制台登录启动脚本点源
/etc/profile.d/lang.sh
- KDE Plasma 读取
~/.config/plasma-localerc
- 其他一些发行版阅读
/etc/locale.conf
Systemd 不知道它安装在哪个发行版上。因此,当您要使用 localectl 修改配置时,localectl 会检测是否/etc/locale.conf
存在。如果存在,则 localectl 会修改它,或者将其修改/etc/default/locale
为后备。
就Ubuntu(非GUI)而言,如果/etc/locale.conf
存在case,你会发现无论你如何运行localectl,LANG变量在重启后都会保留。这是因为 Ubuntu 使用/etc/default/locale
, localectl 修改了一个 Ubuntu 永远不会读取的文件。
答案2
Linux 的不同发行版或版本采用其中之一。作为一个恰当的例子,Debian 10 的文档主要参考/etc/default/locale
(例如man update-locale
)。其与systemd相关的部分也可参考/etc/locale.conf
(例如man locale.conf
)。
一个简短的测试表明(也是 Debian 10 的 systemd 的一部分)报告as 系统语言环境localectl
的内容,除非也存在:在这种情况下,它显然优先。/etc/default/locale
/etc/locale.conf
我/etc/default/locale
专门使用(同样,在当前版本的 Debian 上)。我的理由是:这个可以适合Debian,任何一个都适合系统,所以总的来说这是一个明确的选择。
答案3
经过一些实验,我确定 KDE neon 尊重 中的区域设置/etc/default/locale
,但忽略 中的区域设置/etc/locale.conf
。我仍然不明白为什么 Ubuntu 对区域设置文件使用不同的位置,但我得出的结论是,在基于 Ubuntu 的发行版上,有必要使用它/etc/default/locale
来设置区域设置。另外,我刚刚替换/etc/default/locale
为 的符号链接/etc/locale.conf
,一切正常,但现在我只有一个包含区域设置的文件。