我已经设置了新的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字符仍然无法正确呈现。
正如Gunnar Hjalmarsson在评论中提到的,答案的确与PAM有关。通过禁用了PAM sshd_config
,尽管老实说我自己不记得这样做。
总结一下:如果/etc/default/locale
似乎被忽略,请检查是否启用了PAM。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句