rc.status 파일이 LC_ALL 로케일을 설정하는 이유는 무엇입니까?

rc.status 파일이 LC_ALL 로케일을 설정하는 이유는 무엇입니까?

현재 데몬 서비스를 만들고 있는데 기존 서비스 기능을 활용하기 위해 시작 스크립트는 /etc/status에서 가져옵니다.

첫 번째 줄에서 로캘이 POSIX로 설정되어 있으므로 서비스에 문제가 발생합니다.

# Do _not_ be fooled by non POSIX locale
LC_ALL=POSIX
export LC_ALL

문제는 스크립트에서 시작된 서비스가 이 로케일을 상속한다는 것입니다. 이 문제에 대한 간단한 해결책은 하위 프로세스를 시작하기 전에 로케일을 설정 해제하는 것입니다. 그러나 이것이 무엇을 의미하는지 모르겠습니다. rc.status에서 데이터를 검색한 후 LC_ALL 변수를 재설정하면 어떤 결과가 발생합니까?

답변1

POSIX가 아닌 로케일을 사용하여 호출하면 많은 시스템 데몬이 이상하게 동작합니다. 특히 대소문자와 구두점을 무시하는 UTF-8 대조를 일반적으로 처리하지 않습니다. POSIX가 아닌 시간 형식은 일반적으로 고정 시간 형식이 필요한 표준 도구로 로그 파일을 구문 분석하지 못하게 할 수도 있습니다. 드물지만 LC_CTYPE문제가 발생할 수 있습니다.

일반적으로 데몬에 시스템 전체 로케일이 필요한 /etc/sysconfig/language경우 rc.status. (이것은 안전해 보이는 일종의 SuSE를 가정합니다 rc.status. BSD라면 현재 어디에 저장되어 있는지 모르겠습니다.) 변수는 RC_접두어(예: RC_LC_ALL)가 붙은 공통 변수가 됩니다.

관련 정보