web-dev-qa-db-ja.com

WindowsPuTTYからLinuxにsshするときの奇妙なセットロケールの動作

お願いします、
半年前にサーバーをインストールして以来、誰かがこの奇妙なロケール関連の警告に光を当てることができますか。これは「LC_CTYPEをデフォルトのロケールに設定できない」の変形であり、かなり一般的な問題のようですが、以前に報告したどのケースとも一致しない、奇妙なひねりがあります。

この警告は、WindowsでPuTTYを使用して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)

GitBashからsshコマンドを使用した場合も同じことが起こります。 VNCを使用してログを記録し、KDEでKonsoleを開くと、これらの警告なしにBashが開きます。

私の場合に固有なのは、LC_CTYPEを設定しようとする値:en_GB.UTF-8,LANG=en_US.UTF-8です。 2つの連結された文字列のように見えます。どうしてこんなことが起こったの!?

これはサーバー側の元の出力です

$ 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サーバー:「openSUSELeap15.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
Espinosa

解決した、謎の終わり。問題はファイルにありました/etc/locale.conf。奇妙な線が1つだけありました。

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
Espinosa

(コメントはできません。)

Linuxの/ etc/ssh/sshd_configは次の行ですか?

AcceptEnv LANG LC_*
0
miwarin