LC_ 변수는 어떻게 작동하나요?

LC_ 변수는 어떻게 작동하나요?

이러한 변수를 설정하는 방법에 대한 질문은 많지만 작동 방식에 대한 질문은 없습니다.

터미널에 입력 하면 locale여러 변수가 표시됩니다.

LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"

그러나 이들은 시스템에 존재하지 않습니다. echo를 실행하면 빈 문자열이 반환됩니다 echo $LC_MONETARY.

유틸리티가 사용자 정의할 수 있고 기본값을 무시하도록 설정할 수 있는 일부 데이터베이스 및 인쇄 환경 변수를 읽고 있다고 가정합니까?

  1. 어떤 데이터베이스를 읽고 있나요? 설정을 재정의하기 위해 이러한 변수를 사용하지 않고 직접 편집할 수 있습니까?
  2. 이러한 변수가 설정된 경우 해당 변수를 사용하는 시스템 구성 요소는 무엇입니까? 사용자 공간 프로그램에서 사용됩니까?
  3. locale다른 유틸리티와 함께 ​​제공되는 패키지의 일부입니까 ?
  4. 이러한 변수는 표준의 일부이며 모든 분포에서 발견됩니까?

LC_ 변수 및 로케일 유틸리티를 설명하는 문서를 참조해 주시면 감사하겠습니다. 내가 찾은 대부분의 웹 기사에서는 사용 방법을 설명하지만 로케일 시스템의 디자인/아키텍처에 대해서는 설명하지 않습니다.

답변1

  1. 이 값은 데이터베이스에서 읽혀지지 않습니다. locale해당 가능우선순위 규칙: LANG설정된 경우 설정되지 않은 변수의 기본값을 결정하고 LC_, LC_ALL설정된 경우 모든 값을 재정의합니다. 예를 들어, LANG및 를 LC_CTYPE명시적으로 설정 en_GB.UTF-8하면 모든 값이 locale표시되지만 로 설정하면 모든 값 이 표시됩니다.en_GB.UTF-8LANGfr_FR.UTF-8fr_FR.UTF-8와는 별개로 LC_CTYPE.

  2. 변수를 읽는 방법은 다음과 같습니다.setlocale기능, 로케일에 관심이 있는 경우 어떤 프로그램을 호출해야 하는지.

  3. locale일반적으로 C 라이브러리의 일부입니다.

  4. 변수는 다음에 정의되어 있습니다.POSIX, 대부분의 Unix 스타일 시스템에서 발견되는 공통 인터페이스를 정의하는 표준입니다. 일부 시스템(또는 C 라이브러리)에는 확장 기능이 있습니다.GNU C 라이브러리는 많은 비표준 로케일 범주를 정의합니다.예를 들어 LC_ADDRESS.

당신은 또한 볼 수 있습니다LANG=C와 LC_ALL=C의 차이점은 무엇입니까?그리고지역 설정 프로그램은 어떻게 작동하나요?

관련 정보