我已经安装了新的Ubuntu 16.04服务器,但是当我尝试永久更改语言环境设置时,它会失败并恢复为POSIX语言环境。
键入会locale
产生以下结果:
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
据我所知,这意味着根本没有设置语言环境,因为文档指出POSIX是“ 后备ASCII编码,与C相同 ”。
为了确保语言环境de_AT.utf8
和en_US.utf8
存在我的系统上,我跑了locale -a
,这产生了:
C
C.UTF-8
POSIX
de_AT.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
请注意与的不一致之处C.UTF-8
,但是de_AT.utf8
!更让我担心的是,POSIX是第三项,而在不同的工作系统上,它是最后一项。
为了将语言更改为en_US.utf8
,我输入了sudo update-locale LANG=en_US.utf8
。该locale
命令仍显示POSIX语言环境。注销并重新登录后,locale
仍显示POSIX语言环境。重新启动后,locale
仍显示POSIX语言环境。
但是,当我键入时export LANG=en_US.utf8
,它会暂时起作用,但只能直到注销。因此,我可以肯定,语言环境是正确生成的。
我没主意。我尝试重新生成所有语言环境,但看起来好像/etc/default/locale
只是被忽略了。
为了完整起见,/etc/default/locale
仅包含以下行LANG=en_US.utf8
UPDATE://我尝试运行sudo localectl set-locale LANG=en_US.UTF-8
,并且localectl
还向我展示了它设置了语言环境,但是即使重新启动后,locale
仍然显示POSIX,并且非ASCII字符仍然无法正确呈现。
systemd
方法localectl set-locale LANG=C.UTF-8
吗?
/etc/pam.d
,则应该可以使用。但就目前而言,您可能需要创建/etc/profile.d/mylocalesetting.sh
并添加该行export LANG=en_US.UTF-8
。
/etc/default/locale
由PAM读取。您是否可能禁用了PAM?