Странное поведение установки локали при 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:

$ 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)

Есть идеи?

PuTTY just after logging in showing LC_CTYPE: cannot change locale warning
ssh in Git Bash just after logging in showing LC_CTYPE: cannot change locale warning

1
задан 4 March 2019 в 00:18
2 ответа

Решено, конец тайны. Проблема была в файле /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 .

0
ответ дан 4 December 2019 в 03:12

(Не могу комментировать.)

Является ли / etc / ssh / sshd_config в Linux следующей строкой?

AcceptEnv LANG LC_*
0
ответ дан 4 December 2019 в 03:12

Теги

Похожие вопросы