
나는 쉘 스크립트에서 모든 로케일별 차이점을 비활성화하고 싶습니다. 이를 수행하는 데 선호되는 방법은 무엇입니까?
LANG=C
또는LC_ALL=C
답변1
LANG
기본 로케일을 설정하고,즉더 이상 구체적인 설정( , LC_COLLATE
등 )이 제공되지 않을 때 사용되는 로캘입니다 . 이는 설정을 재정의하지 않으며 기본 값을 제공합니다. 반면에 모든 로케일 설정을 무시합니다.LC_NUMERIC
LC_TIME
LC_ALL
따라서 스크립트 설정을 무시하려면 를 설정해야 합니다 LC_ALL
.
를 실행하여 설정의 효과를 확인할 수 있습니다 locale
. 그것은 보여줍니다계획된명시적으로 설정되지 않은 모든 로케일 범주에 대한 값(따옴표). 귀하의 예에서는 LANG
재정의되지 않고 LC_NUMERIC
기본값을 제공합니다. 환경에 LC_ALL
및 가 설정되지 않은 경우 로케일은 에서 가져 오고 따옴표로 표시된 대로 해당 값을 표시합니다 .LC_NUMERIC
LANG
locale
LC_NUMERIC
보다맨 locales
페이지그리고환경 변수의 POSIX 정의자세한 내용은. 또한보십시오"로케일" 프로그램은 어떻게 작동하나요?
답변2
LANG
재정의되지 않습니다:
$ 내보내기 LC_NUMERIC="de_DE.UTF-8" $ 내보내기 LANG=C $ printf "%.2f\n" 3.14 -bash: printf: 3.14: 잘못된 숫자 3,00
그러나 LC_ALL
다음을 수행합니다.
$ 내보내기 LC_NUMERIC="de_DE.UTF-8" $ 내보내기 LC_ALL=C $ printf "%.2f\n" 3.14 3.14