在 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 身份运行,因此不可能存在权限问题。

我不想仅仅LANG在全局的某个地方设置环境变量,/etc/profiles因为服务器是由 Ansible 配置的,所以没有交互式登录 shell。

相关内容