지역 설정 프로그램은 어떻게 작동하나요?

지역 설정 프로그램은 어떻게 작동하나요?

프로그램 locale은 프로그램을 시작한 프로세스의 로캘 변수를 인쇄합니다. 다음은 locale셸에서 시작할 때의 샘플 출력입니다.

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

이 정보는 어디서 얻을 수 있습니까 ? (쉘에는 4개의 로케일 환경 변수만 있으므로 locale이 정보는 쉘 환경 변수에서 상속되지 않는다는 것을 알고 있습니다 .)locale

답변1

해당 환경 변수의 값을 기반으로 로케일을 처리하는 방법을 알고 이를 얻습니다.

GNU 버전을 예로 들면 다음과 같이 시작됩니다.부르다setlocale (LC_ALL, "")현재 로케일을 설정합니다. 그러면 다 겪게 될 거야로케일 카테고리LANG, (먼저 인쇄됨) 및 LC_ALL(마지막으로 인쇄됨) 을 제외 하고 각 값을 차례로 인쇄합니다 . 이러한 값은 환경 값을 확인하고 로케일에 적용되는 규칙을 따라 결정됩니다.

  • 설정 하면 LC_ALL모든 카테고리가 해당 값을 사용합니다.
  • 카테고리에 환경에 설정된 값이 없으면 LANG"POSIX" 값이 있으면 그 값을 취하고, 그렇지 않으면 "POSIX" 값을 취하고 그 값은 다음에 포함됩니다.큰따옴표.

답변2

프로그램 locale은 환경 변수를 기반으로 결과를 인쇄합니다.

귀하가 나열한 출력에는 Linux에만 해당될 수 있는 비표준 로케일이 포함되어 있습니다.

이것이 어떻게 작동하는지 이해하려면 다음 사항을 아는 것이 중요할 수 있습니다.

  • LC_ALL은 환경의 다른 모든 명시적 LC_* 변수를 재정의합니다.

  • LANG은 특정 LC_XXX 변수가 환경에 없는 경우 대체 수단으로 사용됩니다.

관련 정보