localectl을 사용하여 CentOS 7에서 변경된 로캘이 작동하지 않습니다.

localectl을 사용하여 CentOS 7에서 변경된 로캘이 작동하지 않습니다.

en_US.utf8애플리케이션의 모든 로그 메시지가 영어로 표시되도록 현지화를 변경하고 싶습니다 . 이것은 명령 앞에 를 붙이면 작동합니다 LANG=en_US.utf ./my-command. 이제 의 모든 출력은 ./my-command영어입니다.

localectl영구적으로 만드는 데 적합한 도구인 것 같아서 시도해 보았습니다.

[root@cnx65 ~]# localectl set-locale LANG=en_US.utf8

그러나 지금 실행하면 ./my-command출력은 여전히 ​​독일어로 표시됩니다. 에 따르면 다음을 설정 localectl했습니다 en_US.utf8.

[root@cnx65 ~]# localectl
   System Locale: LANG=en_US.utf8
       VC Keymap: de_alt_UTF-8
      X11 Layout: us

여기서 locale변수에는 $LANG여전히 독일어가 표시됩니다.

[root@cnx65 ~]# locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
[root@cnx65 ~]# echo $LANG
de_DE.UTF-8

또한 다음과 같은 로케일이 존재하는지 확인했습니다 localectl -a.

[root@cnx65 ~]# locale -a | grep en_US.utf8
en_US.utf8

왜 이것이 작동하지 않습니까? 나에게는 추적이 불가능하다. 보시다시피 모든 명령은 루트로 실행되었으므로 권한 문제가 발생할 수 없습니다.

LANG서버가 Ansible에 의해 프로비저닝되었으므로 전역적으로 환경 변수를 설정하고 싶지 않으므로 /etc/profiles대화형 로그인 셸이 없습니다.

관련 정보