2011-12-12 2 views
1

Fedora 15에서 실행되는 C 프로그램 (DHCPD)이 있습니다. on commit 문 (exec 명령을 차례로 사용하는 문)을 사용하여 스크립트를 호출합니다. 모든 로케일 파일 (예 : i18n)을 en_GB.utf8으로 설정하면 스크립트의 $LANG 변수는 항상 en_US.UTF-8으로 설정됩니다.Fedora 15 로켈이 올바르게 설정되지 않습니다.

흥미롭게도 스크립트가 쉘 프롬프트에서 실행될 때 $LANG 변수는 en_GB.utf8으로 설정됩니다. DHCPD 프로그램에서 호출 할 때 en_GB.utf8을 사용하려면 어떻게해야합니까?

+0

dhcpd가 환경을 재설정 중이거나 dhcpd에 전달 된 환경이 그런 식으로 설정되어 있습니다. –

+0

나는 그가 '또는 dhcpd에 전달 된 환경이 그런 식으로 설정되어있다'는 것을 이해하지 못한다. - 환경이 통과 되었다면 환경 파일을 사용해야한다. – user1087598

+0

데몬을 시작할 때 환경 파일이 사용되는 이유는 무엇이라고 생각하십니까? 아마 성능을 위해 건너 뜁니다. 이 경우 –

답변

1

먼저, /etc/sysconfig/i18n을 확인하고 LANG이 무엇인지 확인하십시오.

과 같은 서비스를 시작하기 위해 Fedora 15는와 같은 서비스를 시작하며 사용자 환경을 무시하고 깨끗한 환경을 시작하는 각 데몬을 제공합니다. 데몬은 거기에 지정된 설정으로 실행해야하지만 /etc/sysconfig/i18n에서 설정을 가져옵니다.

/proc/NNN/environ 여기서 NNN은 LANG이 무엇인지 확인하는 dhcpd 프로세스의 PID입니다. 이 파일은 원시 환경이기 때문에 각 문자열 사이에 이진수가 있습니다.

이것이 예상되는 경우 가장 가능성있는 대답은 구성 파일에 지정된 스크립트를 호출하기 전에 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

관련 문제