CentOS 7でlocalectlを使用してロケールを変更しても機能しない

CentOS 7でlocalectlを使用してロケールを変更しても機能しない

アプリケーションからのすべてのログ メッセージが英語で表示されるように、ローカリゼーションを に変更したいと思います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

なぜこれが機能しないのでしょうか? 私には追跡できません。ご覧のとおり、すべてのコマンドは root として実行されたため、権限の問題は発生しませんでした。

サーバーは Ansible によってプロビジョニングされているため、対話型ログイン シェルがないため、LANG環境変数を のようにグローバルに設定するだけでは不十分です。/etc/profiles

関連情報