Пожалуйста,
Может ли кто-нибудь пролить свет на это странное предупреждение, связанное с локализацией, которое меня раздражает с тех пор, как я установил свой сервер полгода назад. Это вариант «Не удается установить 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
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_*