Solaris에서 LC_ALL을 설정하면 어떤 영향이 있습니까?

Solaris에서 LC_ALL을 설정하면 어떤 영향이 있습니까?

/etc/profile방금 설치한 응용 프로그램을 지원하기 위해 Solaris 10 UNIX 서버의 파일 에 다음 명령을 추가하라는 요청을 받았습니다 .

LC_ALL=en_US.UTF-8; export LC_ALL

그 결과 현재 정의되지 않은 서버의 "로케일"이 변경됩니다(기본값은 "C").

내 질문: 이렇게 변경하면 안 되는 이유가 있나요?

대안으로 변수를 내보내고 애플리케이션을 실행한 다음 다시 "설정 해제"하는 스크립트를 작성하는 것을 상상할 수 있습니다. 나는 이것을 하는 것에 신경쓰지 않지만 그러한 변화의 의미를 실제로 이해하지 못합니다.

/etc/default/init또한 파일에도 동일한 변경이 이루어질 수 있다는 것을 배웠습니다 . 이것이 더 나은 해결책일까요?

답변1

LC_ALL다른 모든 환경 설정보다 성능이 뛰어납니다. 이 설정을 시스템 전체에서 설정하지 않는 것이 좋습니다. 이는 다른 설정을 사용하려는 모든 애플리케이션이나 사용자가 먼저 해당 설정을 해제해야 함을 의미하기 때문입니다 LC_ALL.

대신, 애플리케이션에 특정 로캘이 필요한 경우 래퍼 스크립트를 통해 실행하세요.

#!/bin/sh
LC_ALL=en_US.UTF-8 exec /path/to/application "$@"

답변2

UTF-8로케일보다 더 나은 선택이며 POSIX실제로는 이제 기본 Solaris 11 코드 세트입니다.

와 호환되므로 사용하는데 문제는 없을 것 같습니다 ASCII.

의 경우 en_US다음 명령에 표시된 대로 문자 순서나 날짜 표시 방법과 같은 미묘한 차이가 있습니다.

$ export LC_ALL=C
$ date
Wed Aug 28 01:21:55 CEST 2013
$ printf "a\nb\nA\nB\nC\n" | sort
A
B
C
a
b
$ LC_ALL=en_US.UTF-8
$ date
Wednesday, August 28, 2013 01:21:58 AM CEST
$ printf "a\nb\nA\nB\nC\n" | sort
a
A
b
B
C

제공된 모든 로캘이 물론 지원되므로 이는 시스템 소프트웨어에 영향을 미치지 않습니다.

엄격한 동작이 필요한 POSIX애플리케이션은 또는 LC_ALL로 설정해야 합니다 .CPOSIX

변경 사항을 구현할 위치에 관해서는 , 및 /etc/default/init뿐만 아니라 각 프로세스의 기본 로케일을 설정하는 파일을 편집하는 것이 더 나은 접근 방식입니다 . shkshbashzsh

관련 정보