我想将本地化更改为,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。