linuxfromscratch:12.1:160-configuring_the_system_locale

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
linuxfromscratch:12.1:160-configuring_the_system_locale [2024/05/18 16:47] – 만듦 - 바깥 편집 127.0.0.1linuxfromscratch:12.1:160-configuring_the_system_locale [2024/06/15 13:18] (현재) baecy
줄 1: 줄 1:
 +^  Linux From Scratch - Version 12.1-systemd  ^^^
 +^  Chapter 9. System Configuration  ^^^
 +|[[.159-configuring_the_linux_console:|이전]]  |  [[.:09-System Configuration|위로]] / [[.:12.1|처음으로]]  |  [[.:161-creating_the_etcinputrc_file|다음]]|
  
 +|리눅스 콘솔 설정  |  /etc/inputrc 파일 생성|
 +
 +----
 +
 +===== 9.7. 시스템 로캘 구성 ===== 
 +
 +모국어 지원을 위해 일부 환경 변수가 필요합니다. 이를 올바르게 설정하면 다음과 같은 결과가 나타납니다.
 +
 +  * 프로그램의 출력이 모국어로 번역됩니다.
 +  * 문자를 문자, 숫자 및 기타 클래스로 올바르게 분류. 이는 영어가 아닌 로캘의 명령줄에서 **bash**가 ASCII가 아닌 문자를 올바르게 받아들이는 데 필요합니다.
 +  * 국가에 맞는 올바른 알파벳순 정렬 순서
 +  * 적절한 기본 용지 크기
 +  * 화폐, 시간 및 날짜 값의 올바른 서식 지정
 +
 +아래의 //<ll>//을 원하는 언어의 두 글자 코드(예: ''en'')로 바꾸고 //<cc>//를 해당 국가의 두 글자 코드(예: ''GB'')로 바꿉니다. //<charmap>//은 선택한 로캘의 표준 charmap으로 대체해야 합니다. ''@euro''와 같은 선택적 수정자를 사용할 수도 있습니다.
 +
 +다음과 같이 실행하여 Glibc에서 지원하는 모든 로캘 목록을 확인할 수 있습니다.
 +
 +<code bash>
 +locale -a
 +</code>
 +
 +Charmaps에는 여러 가지 별칭이 있을 수 있습니다 예를 들어 ''ISO-8859-''1은 ''iso8859-1'' 및 ''iso88591''이라고도 합니다. 일부 애플리케이션은 다양한 동의어를 올바르게 처리할 수 없으므로(예: ''UTF-8''을 ''utf8''이 아닌 ''UTF-8''로 작성해야 함) 대부분의 경우 특정 로캘에 대한 표준 이름을 선택하는 것이 가장 안전합니다. 표준 이름을 확인하려면 다음 명령을 실행하세요. 여기서 //<locale name>//은 원하는 로캘에 대한 **locale -a**의 출력값입니다(이 예에서는 ''en_GB.iso88591'').
 +
 +<code bash>
 +LC_ALL=<locale name> locale charmap
 +</code>
 +
 +en_GB.iso88591 로캘의 경우 다음과 같이 출력됩니다.
 +
 +<code bash>
 +ISO-8859-1
 +</code>
 +
 +그 결과 최종 로캘 설정은 en_GB.ISO-8859-1이 됩니다. 위의 휴리스틱을 사용하여 찾은 로캘을 Bash 시작 파일에 추가하기 전에 테스트하는 것이 중요합니다.
 +
 +<code bash>
 +LC_ALL=<locale name> locale language
 +LC_ALL=<locale name> locale charmap
 +LC_ALL=<locale name> locale int_curr_symbol
 +LC_ALL=<locale name> locale int_prefix
 +</code>
 +
 +위의 명령은 언어 이름, 해당 로캘에서 사용하는 언어, 문자 인코딩, 현지 통화, 전화번호 국제 코드가 순서대로 출력되야 합니다. 위의 명령 중 하나라도 실패하고 아래와 유사한 메시지가 표시되면 8장에서 로캘이 설치되지 않았거나 기본 설치 Glibc에서 지원되지 않는다는 뜻입니다.
 +
 +<code bash>
 +locale: Cannot set LC_* to default locale: No such file or directory
 +</code>
 +
 +이 경우 **localedef** 명령을 사용하여 원하는 로캘을 설치하거나 다른 로캘을 선택하는 것을 고려해야 합니다. 아래의 내용들은 Glibc에서 이러한 오류 메시지가 표시되지 않는다고 가정합니다.
 +
 +다른 패키지도 로캘 이름이 기대에 미치지 못하는 경우 잘못 작동할 수 있지만 반드시 오류 메시지가 표시되지는 않을 수 있습니다. 이러한 경우 다른 Linux 배포판에서 해당 로캘을 어떻게 지원하는지 조사하면 유용한 정보를 얻을 수 있습니다.
 +
 +적절한 로캘 설정이 결정되면 ''/etc/locale.conf'' 파일을 만듭니다.
 +
 +<code bash>
 +cat > /etc/locale.conf << "EOF"
 +LANG=<ll>_<CC>.<charmap><@modifiers>
 +EOF
 +</code>
 +셸 프로그램 ''/bin/bash''(이하 "셸"이라 함)는 시작 설정 파일들을 사용하여 실행할 환경을 만드는 데 도움을 줍니다. 각 파일은 용도가 다르며 로그인 및 대화형 환경에 따라 다르게 영향을 미칠 수 있습니다. ''/etc'' 디렉터리에 있는 파일은 전역 설정을 제공합니다. 홈 디렉터리에 동일한 파일이 있는 경우 해당 파일이 전역 설정을 재정의할 수 있습니다.
 +
 +대화형 로그인 셸은 ''/bin/login''을 사용하여 ''/etc/passwd'' 파일을 읽음으로써 시작됩니다. 대화형 비로그인 셸은 명령줄에서 시작됩니다(예: [prompt]$/bin/bash). 비대화형 셸은 일반적으로 셸 스크립트가 실행 중일 때 존재합니다. 비대화형 셸은 스크립트를 처리하고 명령 사이에 사용자 입력을 기다리지 않기 때문에 비대화형입니다.
 +
 +로그인 셸은 ''/etc/locale.conf''의 설정에 영향을 받지 않는 경우가 많습니다. 다음 파일은 ''/etc/profile'''을 만들어 ''/etc/locale.conf''에서 로캘 설정을 내보냅니다. 다만 Linux 콘솔에서 실행하는 경우에는 대신 C.UTF-8 로캘을 설정합니다(Linux 콘솔이 렌더링할 수 없는 문자를 프로그램이 출력하는 것을 방지합니다).
 +
 +<code bash>
 +cat > /etc/profile << "EOF"
 +# Begin /etc/profile
 +
 +for i in $(locale); do
 +  unset ${i%=*}
 +done
 +
 +if [[ "$TERM" = linux ]]; then
 +  export LANG=C.UTF-8
 +else
 +  source /etc/locale.conf
 +
 +  for i in $(locale); do
 +    key=${i%=*}
 +    if [[ -v $key ]]; then
 +      export $key
 +    fi
 +  done
 +fi
 +
 +# End /etc/profile
 +EOF
 +</code>
 +
 +systemd **localectl** 유틸리티를 사용하여 ''/etc/locale.conf''를 수정할 수 있습니다. 위 예제와 같은 결과를 **localectl**에서 얻으려면 다음과 같이 실행하세요.
 +
 +<code bash>
 +localectl set-locale LANG="<ll>_<CC>.<charmap><@modifiers>"
 +</code>
 +
 +**locale** 출력에서 ''LANG'', ''LC_CTYPE'', ''LC_NUMERIC'' 등 다른 언어별 환경 변수를 지정할 수도 있습니다. 공백으로 구분하기만 하면 됩니다. ''LANG''이 en_US.UTF-8로 설정되어 있지만 ''LC_CTYPE''이 그냥 en_US로 설정된 예는 다음과 같습니다.
 +
 +<code bash>
 +localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US"
 +</code>
 +
 +<WRAP info center round 90%>
 +**참고** \\ **localectl** 명령은 루트 환경에서는 작동하지 않는다는 점에 유의하세요. 이 명령은 LFS 시스템이 systemd로 부팅된 후에만 사용할 수 있습니다.
 +</WRAP>
 +
 +C(기본값)와 en_US(미국 영어 사용자에게 권장되는) 로캘은 서로 다릅니다. C는 US-ASCII 7비트 문자 집합을 사용하며 비트가 높은 바이트는 유효하지 않은 문자로 취급합니다. 따라서 예를 들어, 해당 로캘에서는 **ls** 명령이 해당 문자를 물음표로 대체합니다. 또한 Mutt 또는 Pine에서 이러한 문자를 사용하여 메일을 보내려고 시도하면 RFC를 준수하지 않는 메시지가 전송됩니다(발신 메일의 문자 집합이 ''unknown 8-bit''로 표시됨). 8비트 문자가 절대 필요하지 않다고 확신하는 경우에만 C 로캘을 사용하는 것이 좋습니다.
  • linuxfromscratch/12.1/160-configuring_the_system_locale.1716050856.txt.gz
  • 마지막으로 수정됨: 2024/05/18 16:47
  • 저자 127.0.0.1