셸 프로그램(이하
“셸”로
칭함)인 /bin/bash는
실행할 환경을
만들기 위해 시작
파일 모음을
사용한다. 각
파일들은 특정한
용도를 가지며
로그인과 대화형
환경에 따라 다른
영향을 미친다. /etc
디렉토리의
파일은 전역 설정을
제공한다. 홈
디렉토리에 동일한
파일이 있다면, 전역
설정보다
우선시된다.
/bin/login을
통해 /etc/passwd
파일을 읽어
로그인에 성공하면
대화형 로그인 셸이
시작된다. 대화형
비로그인 셸은
명령줄에서
시작한다(예: [prompt]$
/bin/bash).
비대화형 셸은
일반적으로 셸
스크립트가 실행
중일 때 나타난다.
스크립트를
처리하느라 명령들
간에 사용자의
입력을 기다리지
않기 때문에
비대화형이라 한다.
더 많은 정보는 info bash의 Bash Startup Files and Interactive Shells절을 참고하라.
/etc/profile
과 ~/.bash_profile
파일들은
셸이 대화형 로그인
셸로 호출될 때
읽힌다.
아래에서 설명할
기본 /etc/profile
은
자국어 지원에
필요한 몇 가지 환경
변수를 설정한다.
이들을 적절히
설정하면 다음과
같은 결과들을 얻을
수 있다:
프로그램들의 출력을 자국어로 출력
문자를 문자, 숫자 및 기타 기호로 올바르게 분류한다. 이는 bash가 영미권 이외의 비 ASCII문자를 명령줄에서 올바르게 다루기 위해 필요하다.
국가에 대한 올바른 알파벳 정렬 순서
적절한 기본 용지 크기
통화, 시간 및 날짜 값의 올바른 형식 지정
아래 <ll>
을
원하는 언어에 대한
2글자 코드로(예: “en”),
<CC>
를
해당 국가(예: “GB”)로
대체하라. <charmap>
은
선택한 지역에 대한
표준 문자표로
대체해야 한다. “@euro”와
같은 선택적 옵션도
사용할 수 있다.
Glibc에서 지원하는 모든 국가/지역(locale)의 목록은 다음 명령을 실행하여 얻을 수 있다:
locale -a
문자표는 많은
별칭을 가질 수 있다.
예를 들어 “ISO-8859-1”은 “iso8859-1”
또는 “iso88591”이라고도
한다. 일부 응용
프로그램들은 이
다양한 동의어들을
올바르게 처리하지
못하므로(가령 “UTF-8”은
“utf8”이 아닌
“UTF-8”로
표기되어야 한다),
대부분의 경우 특정
국가/지역의 정식
명칭을 선택하는
것이 가장 안전하다.
정식 명칭을
알아내려면 다음
명령을 실행하라.
여기서 <locale
name>
은 선호하는
국가/지역에 대한
locale -a의
출력 결과이다(이
예시에서는 “en_GB.iso88591”).
LC_ALL=<locale name>
locale charmap
“en_GB.iso88591” 로케일에 대해서, 위 명령은 다음과 같이 출력한다:
ISO-8859-1
이렇게 하면 최종 국가/지역 설정은 “en_GB.ISO-8859-1”이 된다. 위의 방법을 사용하여 찾은 로케일을 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
위의 명령은 언어 이름, 해당 국가에서 사용하는 문자 인코딩, 현지 통화 및 국제 전화 지역 번호 등을 출력한다. 위의 명령 중 하나가 아래 표시된 것과 유사한 메시지와 함께 실패한다면, 해당 로케일이 6장에서 설치되지 않았거나 Glibc의 기본 설치로부터 지원되지 않음을 의미한다.
locale: Cannot set LC_* to default locale: No such file or directory
이 경우 localedef 명령을 사용하여 원하는 로케일을 설치하거나, 다른 로케일을 선택해야 한다. 아래 지침은 Glibc로부터 이러한 오류 메시지가 뜨지 않는다고 가정한다.
LFS 이외의 일부 패키지들은 선택한 로케일을 지원하지 않을 수도 있다. X 라이브러리(X 윈도 시스템의 일부)가 한 가지 예로, 로케일이 내부 파일의 문자표 이름 중 하나와 정확히 일치하지 않으면 다음 오류 메시지를 출력한다:
Warning: locale not supported by Xlib, locale set to C
간혹 Xlib는 "iso88591" 대신 "ISO-8859-1"와 같이, 표준 대시와 함께 대문자로 표기된 문자표를 필요로 한다. 로케일 사양의 문자표 부분을 제거하여 적절한 사양을 찾을 수도 있다. 이는 두 로케일에서 locale charmap 명령을 실행하여 확인할 수 있다. 예를 들어, Xlib에서 이 로케일을 인식하도록 하려면 "de_DE.ISO-8859-15@euro"를 "de_DE@euro"로 변경해야 한다.
다른 패키지도 로케일 이름이 기대값에 알맞지 않을 경우 잘못 작동할 수 있다(그러나 오류 메시지를 반드시 출력하지는 않을 수도 있다). 이 경우, 다른 리눅스 배포판들에서 로케일을 지원하는 방법을 조사하면 몇 가지 유용한 정보를 얻을 수 있다.
올바르게 로케일을
설정했다면 /etc/profile
파일을
생성하라:
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=<ll>_<CC>.<charmap><@modifiers>
# End /etc/profile
EOF
“C”(기본값)와 “en_US”(미국 영어 사용자에게 권장되는 설정) 로케일은 서로 다르다. “C”는 US-ASCII 7비트 문자 집합을 사용하며, 높은 비트가 설정된 바이트를 잘못된 문자로 처리한다. 따라서, 예를 들면 ls 명령은 해당 로케일의 물음표로 그러한 문자를 대체한다. 또 Mutt나 Pine에서 이러한 문자로 메일을 보내려고 하면 RFC 비준수 메시지가 전송된다(발송 메일의 문자 집합은 “알 수 없는 8-bit”로 표시됨). 따라서 8비트 문자가 절대 필요하지 않을 경우에만 “C” 로케일을 사용할 수 있다.
UTF-8 기반 로케일은 일부 프로그램에서 잘 지원되지 않는다. 문서화 작업이 진행 중이며, 가능하면 http://www.linuxfromscratch.org/blfs/view/9.1/introduction/locale-issues.html를 참고하여 이러한 문제를 해결하라.