Пожалуйста,
Может ли кто-нибудь пролить свет на это странное предупреждение, связанное с локализацией, которое меня раздражает с тех пор, как я установил свой сервер полгода назад. Это вариант «Не удается установить LC_CTYPE в локаль по умолчанию», что кажется довольно распространенной проблемой, но у меня есть странный поворот, не соответствующий ни одному из случаев, о которых я обнаружил ранее.
Это предупреждение выводится сразу после того, как я войдите с помощью PuTTY в Windows на мой сервер Linux.
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF-8,LANG=en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF-8,LANG=en_US.UTF-8)
То же самое происходит, когда я использую команду ssh
из Git Bash. Когда я вхожу в систему с помощью VNC и открываю Konsole в KDE, Bash открывается без какого-либо из этих предупреждений.
Уникальным для моего случая является значение, которое он пытается установить LC_CTYPE: en_GB.UTF-8, LANG = en_US. UTF-8
. Это похоже на две сцепленные строки. Как это произошло!?
Это исходный вывод на стороне сервера
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_GB.UTF-8
LC_CTYPE=en_GB.UTF-8,LANG=en_US.UTF-8
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
...
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
Обратите внимание, что:
1) установлены все переменные, кроме LC_ALL - это нормально?
2) LC_CTYPE имеет странное "сцепленное" значение
3) Все значения заключены в кавычки, кроме LC_CTYPE
4) предупреждение аналогично, но жалуется также на LC_ALL
. Я попытался исправить это, отредактировав ~ / .profile
на стороне сервера, добавив:
export LANG=en_GB.UTF-8
export LC_ALL=en_GB.UTF-8
Теперь, после повторной регистрации, locale, кажется, показывает разумные значения и никаких предупреждений от команды locale:
$ locale
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
...
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=en_GB.UTF-8
Следует ли мне беспокоиться о том, что некоторые значения не заключены в кавычки?
Но предупреждение о входе в систему все еще присутствует, все еще вытаскивая en_GB.UTF8, LANG = en_US.UTF-8
откуда-то:
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF8,LANG=en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_GB.UTF8,LANG=en_US.UTF-8)
Сервер Linux: "openSUSE Leap 15.0"
Клиент Windows 1: PuTTY 0.70
Клиент Windows 2: Git Bash 2.21.0 (терминал MinTTY)
Есть идеи?
Решено, конец тайны. Проблема была в файле /etc/locale.conf
. Там была только одна странная строка:
LC_CTYPE=en_GB.UTF-8,LANG=en_US.UTF-8
Когда я изменил ее на:
LC_CTYPE=en_GB.UTF-8
LANG=en_US.UTF-8
.. предупреждение исчезло!
Похоже на ошибку openSUSE; скорее всего какой-то апгрейд системы прикрутил этот файл, поставил конец строки на запятую. Я получил хорошую помощь на этом форуме openSUSE .
(Не могу комментировать.)
Является ли / etc / ssh / sshd_config в Linux следующей строкой?
AcceptEnv LANG LC_*