Назад | Перейти на главную страницу

Странное поведение при установке локали при переходе ssh из Windows PuTTY в Linux

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