Fedora 15语言环境没有正确设置
我有一个C程序(DHCPD)在Fedora 15上运行;它使用on commit
语句(该语句使用exec
命令)来调用脚本。当所有区域设置文件(例如i18n)设置为en_GB.utf8
时,脚本的$LANG
变量始终设置为en_US.UTF-8
。Fedora 15语言环境没有正确设置
有趣的是,当脚本从shell提示符下运行时,$LANG
变量设置为en_GB.utf8
- 如何从DHCPD程序调用时如何使用en_GB.utf8
?
那么首先要做的是检查/etc/sysconfig/i18n
并查看LANG
设置为什么。
Fedora 15将使用systemd
来启动像dhcpd
这样的服务,它将忽略用户环境并给每个守护进程启动一个干净的环境。它确实需要从/etc/sysconfig/i18n
进行设置,但守护进程应该使用此处指定的设置运行。
如果这似乎是正确的,看看/proc/NNN/environ
其中NNN是您的dhcpd进程的PID,看看LANG
设置为什么。请注意,此文件是原始环境,因此每个字符串之间都有一个二进制nul。
如果这是您所期望的,那么最有可能的答案是dhcpd
在调用配置文件中指定的脚本之前故意清理环境。
嗨;感谢这一点,environ文件只有PATH条目。如果dhcpd正在清理环境,那么肯定它必须使用系统文件来重置它? – user1087598
在这种情况下,你应该给它添加'LANG =“en_GB.utf8”',或者安装'system-config-language'并运行它,它会为你设置它。 – TomH
是的,我是他们两个 - 将en_GB.utf8添加到i18n并运行了system-config-language程序 - 仍然以en_US.UTF-8的形式出现! – user1087598
dhcpd正在重置环境,或者传递给dhcpd的环境是这样设置的。 –
我不明白他的评论'或传递给dhcpd的环境是这样设置的' - 如果环境被传递,那么肯定它应该使用环境文件? – user1087598
为什么在启动守护程序时会使用环境文件?可能会跳过那些表现。 –