Fedora 15语言环境没有正确设置

问题描述:

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

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

+0

dhcpd正在重置环境,或者传递给dhcpd的环境是这样设置的。 –

+0

我不明白他的评论'或传递给dhcpd的环境是这样设置的' - 如果环境被传递,那么肯定它应该使用环境文件? – user1087598

+0

为什么在启动守护程序时会使用环境文件?可能会跳过那些表现。 –

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

Fedora 15将使用systemd来启动像dhcpd这样的服务,它将忽略用户环境并给每个守护进程启动一个干净的环境。它确实需要从/etc/sysconfig/i18n进行设置,但守护进程应该使用此处指定的设置运行。

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

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

+0

嗨;感谢这一点,environ文件只有PATH条目。如果dhcpd正在清理环境,那么肯定它必须使用系统文件来重置它? – user1087598

+0

在这种情况下,你应该给它添加'LANG =“en_GB.utf8”',或者安装'system-config-language'并运行它,它会为你设置它。 – TomH

+0

是的,我是他们两个 - 将en_GB.utf8添加到i18n并运行了system-config-language程序 - 仍然以en_US.UTF-8的形式出现! – user1087598