【问题标题】:Fedora 15 locale not getting set correctlyFedora 15 语言环境未正确设置
【发布时间】:2011-12-12 10:26:08
【问题描述】:

我有一个在 Fedora 15 上运行的 C 程序 (DHCPD);它使用on commit 语句(又使用exec 命令)来调用脚本。当所有语言环境文件(例如 i18n)设置为 en_GB.utf8 时,脚本的 $LANG 变量始终设置为 en_US.UTF-8

有趣的是,当脚本从 shell 提示符运行时,$LANG 变量设置为 en_GB.utf8 - 当从 DHCPD 程序调用时,我如何让它使用 en_GB.utf8???

【问题讨论】:

  • 要么 dhcpd 正在重置环境,要么以这种方式设置传递给 dhcpd 的环境。
  • 我不明白他的评论'或者传递给 dhcpd 的环境是这样设置的' - 如果环境正在被传递,那么它肯定应该使用环境文件吗?
  • 为什么您认为启动守护程序时会使用环境文件?可能它会跳过那些性能。
  • 在这种情况下,它从哪里获取语言环境设置?

标签: bash locale fedora


【解决方案1】:

首先要做的是检查/etc/sysconfig/i18n 并查看LANG 的设置。

Fedora 15 将使用systemd 来启动像dhcpd 这样的服务,它会忽略用户环境并为每个守护进程提供一个干净的环境。它确实从/etc/sysconfig/i18n 获取设置,但因此守护程序应该使用那里指定的设置运行。

如果这似乎是正确的,请查看/proc/NNN/environ,其中 NNN 是您的 dhcpd 进程的 PID,以查看 LANG 的设置。请注意,此文件是原始环境,因此每个字符串之间都有一个二进制 nul。

如果这是您所期望的,那么最可能的答案是 dhcpd 在调用其配置文件中指定的脚本之前故意清理环境。

【讨论】:

  • 嗨;谢谢你,环境文件只有一个PATH条目。如果 dhcpd 正在清理环境,那么它肯定必须使用系统文件来重置它吗?
  • 在这种情况下,您应该将LANG="en_GB.utf8" 添加到它,或者安装system-config-language 并运行它,它将为您设置。
  • 是的,我两个都做了 - 将 en_GB.utf8 添加到 i18n 并运行 system-config-language 程序 - 仍然以 en_US.UTF-8 的形式出现!!!
  • 等一下; LANG 正在环境文件中设置 - 我错过了 - 抱歉 - 现在检查.....
  • 对不起,我误读了您的第一条评论,并认为您的意思是 i18n 文件。你确定环境文件只有一个条目 - 也许它只是在第一个 nul 被截断?尝试在 vi 中查看它...
猜你喜欢
  • 2022-11-13
  • 2013-07-01
  • 2019-01-29
  • 2017-01-31
  • 2010-09-09
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多