Неправильно настроен языковой стандарт Fedora 15 - PullRequest
1 голос
/ 12 декабря 2011

У меня есть программа C (DHCPD), работающая на Fedora 15; он использует оператор on commit (который в свою очередь использует команду exec) для вызова скрипта. Переменная $LANG скрипта всегда устанавливается на en_US.UTF-8, когда все файлы локалей (например, i18n) установлены на en_GB.utf8.

Интересно, что когда скрипт запускается из приглашения оболочки, переменная $LANG устанавливается в en_GB.utf8 - как мне заставить его использовать en_GB.utf8 при вызове из программы DHCPD ???

1 Ответ

1 голос
/ 13 декабря 2011

Ну, первое, что нужно сделать, это проверить /etc/sysconfig/i18n и посмотреть, на что установлено значение LANG.

Fedora 15 будет использовать systemd для запуска таких служб, как dhcpd, и будет игнорировать пользовательскую среду и сообщать каждому демону, что он запускает чистую среду. Он принимает настройки от /etc/sysconfig/i18n, хотя демоны должны работать с настройками, указанными там.

Если это кажется правильным, посмотрите на /proc/NNN/environ, где NNN - PID вашего процесса dhcpd, чтобы увидеть, на что установлена ​​LANG. Обратите внимание, что этот файл является необработанной средой, поэтому в каждой строке есть двоичный нуль.

Если это именно то, чего вы ожидаете, то наиболее вероятным ответом будет то, что dhcpd намеренно очищает среду перед вызовом сценариев, указанных в его файле конфигурации.

...