GNU/Linux >> Linux の 問題 >  >> Linux

LC_CTYPE の有効な値?

誰が「正しいか間違っているか」の詳細には触れませんでしたが、同じようにこの問題に悩まされていました.これに対するいくつかの解決策:

  • サーバー側:
    • AcceptEnv LC_* の変更/無効化 /etc/ssh/sshd
      • 短所:システムのデフォルトに設定します
    • 編集 .profile
      • 短所:シングル ユーザー
    • 編集 /etc/bash* または /etc/profile
      • 短所:アップデートで元に戻る可能性があります
  • クライアント側:
    • alias ssh="LC_CTYPE=\"${LANG}\" ssh" .bashrc で /.profile /どこでも
      • 短所:シングル ユーザー
    • .bashrc のサーバー側と同じ /.profile ...
    • ターミナルで設定を変更/追加
      • con:ローカルでもリモートでもセッション全体

というわけで、結局 mac-locale-fix.sh を作ってしまいました /etc/profile.d で 次の行を含むサーバー (私の場合はラスピアン) で:

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

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


基本的な質問は

<ブロック引用>

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

また、環境変数の POSIX ページには、他のユーザーが macOS 構成を正しくないと見なす理由が示されています。

<ブロック引用>

[XSI] If ロケール値の形式は次のとおりです:

language[_territory][.codeset]

言語、地域、コードセットの設定が 実装定義 である実装提供のロケールを参照します。 .

LC_COLLATE , LC_CTYPE , LC_MESSAGES , LC_MONETARY , LC_NUMERIC 、および LC_TIME は、追加のフィールド @ 修飾子を受け入れるように定義されています。これにより、ユーザーは単一のカテゴリ内で特定のローカリゼーション データのインスタンスを選択できます (たとえば、データの文字順序ではなく辞書を選択する場合)。したがって、これらの環境変数の構文は次のように定義されます:

[language[_territory][.codeset][@modifier]]

たとえば、ユーザーがフランス語でシステムとやり取りしたいが、ドイツ語のテキスト ファイルを並べ替える必要がある場合、LANG と LC_COLLATE は次のように定義できます。

LANG=Fr_FR
LC_COLLATE=De_DE

これは、@ 修飾子フィールドを使用して辞書照合 (たとえば) を選択するように拡張できます。例:

[email protected]

実装によって他の形式がサポートされる場合があります。

ロケール値が実装によって認識されない場合、動作は未規定です。

つまり、彼らは POSIX がロケール設定の構文を規定していると想定しています。不注意な読者は、POSIX が環境変数の許容される形式を定義しているため、コードセット 値はオプションであり、言語の代わりにはなりません .しかし、最後の「かもしれない」はワームの缶を開き、解釈のこの違いを事実上祝福します.そのパターンに正確に従わない有効なロケールを提供したい場合、Apple は何でもできます。

@tripleee は Locale のページがより良い情報を提供することを提案しましたが、それは 相互運用性 のガイダンスを提供するのではなく、ほとんど完全にロケール定義の議論です (つまり、POSIX の表向きの目標)。

どちらのページも、利用可能なロケール設定の違い (「.utf8」と「.UTF-8」など) については触れていません。 POSIX ページに記載されているように、これらは実装に依存します。そのため、ローカル システムとリモート システムでどのロケール設定がサポートされているかを自分で判断し、(ここでは ssh の動作) リモート システムでそれらを「互換性を持って」設定する方法を決定するという唯一の解決策がユーザーに残されます。


Linux
  1. Tmuxで使用する用語の有効な値を見つける方法は?

  2. Deja Dupのすべての設定を削除するにはどうすればよいですか?

  3. PleskのWebスクリプト言語リストと設定

  1. CentOS7でYumコマンドのプロキシ設定を有効にする

  2. フィールドの数値に基づいてファイルをソートする方法は?

  3. time_t の最大値 (struct timespec)

  1. 「実行のみ」のファイル権限の有効な使用例?

  2. Linux での Google Chrome のプロキシ設定の構成

  3. df は、使用済みの負の値を示していますか?