LC_CTYPEの有効な値は何ですか?

LC_CTYPEの有効な値は何ですか?

localeMacユーザーがSSHを介してLinuxシステムにログインすると、エラーについて不平を言い、誤ったLC_CTYPE=UTF-8設定について不平を言うさまざまなフォーラムで多くの質問が見つかりました。

LC_*もう少し詳しく説明すると、MacOSのシェルはこの値を設定しているように見え、SSH経由でログインすると(端末などでオプションを有効にした場合)、ローカル変数がリモートシステムにエクスポートされます。

LC_CTYPELinuxは有効なロケールに設定する必要があると主張localegenしますが(時々Linuxシステムの管理者としてこれを変更することができます)、UTF-8当初はロケールではありません。

私のもの基本的な問題は、これがMacOSのバグですか?それとも、変数が完全に指定されたロケール名に設定されるべきであると主張するLinuxは間違っていますか?

第二に、どちらが正しいのか、そしてその理由は何であるかを議論できるように、これはどこに記載されていますか?

第三に、Macユーザー(自分自身を含む)が異なるようにすることができるか、別のものを必要とするものがありますか?

確実な解決策は、次のようなものを配置することです。

LC_CTYPE=en_US.UTF-8

ただし、これは明らかに個人アカウントの問題のみを解決し、.bash_profile他の設定と一致する場合と一致しない可能性がある値をハードコードするだけです。locale

ベストアンサー1

私は誰が「正しいと誰が正しいか」について詳細に説明していませんが、その問題のために同じように迷惑になりました。これに対するいくつかの解決策は次のとおりです。

  • サービス端末:
    • 変更/AcceptEnv LC_*無効/etc/ssh/sshd
      • 短所:システムのデフォルトに設定されます。
    • 編集する.profile
      • 欠点:シングルユーザー
    • 編集/etc/bash*する/etc/profile
      • 欠点:アップデートに戻すことができる
  • 顧客:
    • alias ssh="LC_CTYPE=\"${LANG}\" ssh".bashrc//.profileどこでも
      • 欠点:シングルユーザー
    • .bashrc/.profileのサーバー側と同じ...
    • 端末で設定変更/追加
      • 欠点:ローカルでもリモートでもフルセッション

だから私はついにサーバーにmac-locale-fix.sh次の行を作成しました/etc/profile.d(私の場合はraspian)。

[ "A${LC_CTYPE}" == "AUTF-8" ] && export LC_CTYPE="${LANG}"

これが他の人に役立つことを願っています...

おすすめ記事