Я установил новый сервер 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
ОБНОВЛЕНИЕ: // Я попытался запустить 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?