^ 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가 아닌 문자를 올바르게 받아들이는 데 필요합니다. * 국가에 맞는 올바른 알파벳순 정렬 순서 * 적절한 기본 용지 크기 * 화폐, 시간 및 날짜 값의 올바른 서식 지정 아래의 ////을 원하는 언어의 두 글자 코드(예: ''en'')로 바꾸고 ////를 해당 국가의 두 글자 코드(예: ''GB'')로 바꿉니다. ////은 선택한 로캘의 표준 charmap으로 대체해야 합니다. ''@euro''와 같은 선택적 수정자를 사용할 수도 있습니다. 다음과 같이 실행하여 Glibc에서 지원하는 모든 로캘 목록을 확인할 수 있습니다. locale -a Charmaps에는 여러 가지 별칭이 있을 수 있습니다 예를 들어 ''ISO-8859-''1은 ''iso8859-1'' 및 ''iso88591''이라고도 합니다. 일부 애플리케이션은 다양한 동의어를 올바르게 처리할 수 없으므로(예: ''UTF-8''을 ''utf8''이 아닌 ''UTF-8''로 작성해야 함) 대부분의 경우 특정 로캘에 대한 표준 이름을 선택하는 것이 가장 안전합니다. 표준 이름을 확인하려면 다음 명령을 실행하세요. 여기서 ////은 원하는 로캘에 대한 **locale -a**의 출력값입니다(이 예에서는 ''en_GB.iso88591''). LC_ALL= locale charmap en_GB.iso88591 로캘의 경우 다음과 같이 출력됩니다. ISO-8859-1 그 결과 최종 로캘 설정은 en_GB.ISO-8859-1이 됩니다. 위의 휴리스틱을 사용하여 찾은 로캘을 Bash 시작 파일에 추가하기 전에 테스트하는 것이 중요합니다. LC_ALL= locale language LC_ALL= locale charmap LC_ALL= locale int_curr_symbol LC_ALL= locale int_prefix 위의 명령은 언어 이름, 해당 로캘에서 사용하는 언어, 문자 인코딩, 현지 통화, 전화번호 국제 코드가 순서대로 출력되야 합니다. 위의 명령 중 하나라도 실패하고 아래와 유사한 메시지가 표시되면 8장에서 로캘이 설치되지 않았거나 기본 설치 Glibc에서 지원되지 않는다는 뜻입니다. locale: Cannot set LC_* to default locale: No such file or directory 이 경우 **localedef** 명령을 사용하여 원하는 로캘을 설치하거나 다른 로캘을 선택하는 것을 고려해야 합니다. 아래의 내용들은 Glibc에서 이러한 오류 메시지가 표시되지 않는다고 가정합니다. 다른 패키지도 로캘 이름이 기대에 미치지 못하는 경우 잘못 작동할 수 있지만 반드시 오류 메시지가 표시되지는 않을 수 있습니다. 이러한 경우 다른 Linux 배포판에서 해당 로캘을 어떻게 지원하는지 조사하면 유용한 정보를 얻을 수 있습니다. 적절한 로캘 설정이 결정되면 ''/etc/locale.conf'' 파일을 만듭니다. cat > /etc/locale.conf << "EOF" LANG=_.<@modifiers> EOF 셸 프로그램 ''/bin/bash''(이하 "셸"이라 함)는 시작 설정 파일들을 사용하여 실행할 환경을 만드는 데 도움을 줍니다. 각 파일은 용도가 다르며 로그인 및 대화형 환경에 따라 다르게 영향을 미칠 수 있습니다. ''/etc'' 디렉터리에 있는 파일은 전역 설정을 제공합니다. 홈 디렉터리에 동일한 파일이 있는 경우 해당 파일이 전역 설정을 재정의할 수 있습니다. 대화형 로그인 셸은 ''/bin/login''을 사용하여 ''/etc/passwd'' 파일을 읽음으로써 시작됩니다. 대화형 비로그인 셸은 명령줄에서 시작됩니다(예: [prompt]$/bin/bash). 비대화형 셸은 일반적으로 셸 스크립트가 실행 중일 때 존재합니다. 비대화형 셸은 스크립트를 처리하고 명령 사이에 사용자 입력을 기다리지 않기 때문에 비대화형입니다. 로그인 셸은 ''/etc/locale.conf''의 설정에 영향을 받지 않는 경우가 많습니다. 다음 파일은 ''/etc/profile'''을 만들어 ''/etc/locale.conf''에서 로캘 설정을 내보냅니다. 다만 Linux 콘솔에서 실행하는 경우에는 대신 C.UTF-8 로캘을 설정합니다(Linux 콘솔이 렌더링할 수 없는 문자를 프로그램이 출력하는 것을 방지합니다). 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 systemd **localectl** 유틸리티를 사용하여 ''/etc/locale.conf''를 수정할 수 있습니다. 위 예제와 같은 결과를 **localectl**에서 얻으려면 다음과 같이 실행하세요. localectl set-locale LANG="_.<@modifiers>" **locale** 출력에서 ''LANG'', ''LC_CTYPE'', ''LC_NUMERIC'' 등 다른 언어별 환경 변수를 지정할 수도 있습니다. 공백으로 구분하기만 하면 됩니다. ''LANG''이 en_US.UTF-8로 설정되어 있지만 ''LC_CTYPE''이 그냥 en_US로 설정된 예는 다음과 같습니다. localectl set-locale LANG="en_US.UTF-8" LC_CTYPE="en_US" **참고** \\ **localectl** 명령은 루트 환경에서는 작동하지 않는다는 점에 유의하세요. 이 명령은 LFS 시스템이 systemd로 부팅된 후에만 사용할 수 있습니다. C(기본값)와 en_US(미국 영어 사용자에게 권장되는) 로캘은 서로 다릅니다. C는 US-ASCII 7비트 문자 집합을 사용하며 비트가 높은 바이트는 유효하지 않은 문자로 취급합니다. 따라서 예를 들어, 해당 로캘에서는 **ls** 명령이 해당 문자를 물음표로 대체합니다. 또한 Mutt 또는 Pine에서 이러한 문자를 사용하여 메일을 보내려고 시도하면 RFC를 준수하지 않는 메시지가 전송됩니다(발신 메일의 문자 집합이 ''unknown 8-bit''로 표시됨). 8비트 문자가 절대 필요하지 않다고 확신하는 경우에만 C 로캘을 사용하는 것이 좋습니다.