2011-12-12 45 views
1

我有一個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

爲什麼在啓動守護程序時會使用環境文件?可能會跳過那些表現。 –

回答

1

那麼首先要做的是檢查/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