我在Fedora 15上运行了一个C程序(DHCPD);它使用on commit
语句(后者又使用exec
命令)来调用脚本。当所有语言环境文件(例如i18n)都设置为$LANG
时,脚本的en_US.UTF-8
变量始终设置为en_GB.utf8
。
有趣的是,当脚本从shell提示符运行时,$LANG
变量设置为en_GB.utf8
- 如何从DHCPD程序调用时使用en_GB.utf8
? ??
答案 0 :(得分:1)
首先要做的是检查/etc/sysconfig/i18n
并查看LANG
设置的内容。
Fedora 15将使用systemd
启动dhcpd
之类的服务,它将忽略用户环境并为每个守护程序启动它启动一个干净的环境。它确实需要/etc/sysconfig/i18n
的设置,但守护进程应该使用那里指定的设置运行。
如果这似乎是正确的,请查看/proc/NNN/environ
,其中NNN是您的dhcpd进程的PID,以查看LANG
设置的内容。请注意,此文件是原始环境,因此每个字符串之间都有一个二进制nul。
如果这是您的期望,那么最可能的答案是dhcpd
在调用其配置文件中指定的脚本之前故意清理环境。