LC_変数はどのように機能しますか?

LC_変数はどのように機能しますか?

これらの変数を設定する方法に関する質問はたくさんありますが、どのように機能するかについての質問はありません。

端末に入力すると、複数のlocale変数が表示されます。

LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"

しかし、これらはシステムには存在しません。 echoを実行すると空の文字列が返されますecho $LC_MONETARY

ユーティリティがカスタマイズでき、デフォルト値を無視するように設定できるデータベースと印刷環境変数の一部を読み取っているとしますか?

  1. どのデータベースを読んでいますか?設定を上書きするためにこれらの変数を使用せずに直接編集できますか?
  2. これらの変数が設定されている場合、その変数を使用するシステムコンポーネントは何ですか?ユーザー空間プログラムで使用されますか?
  3. locale他のユーティリティと一緒に提供されるパッケージの一部ですか?
  4. これらの変数は標準の一部であり、すべての分布に見られますか?

LC_変数とロケールユーティリティを説明するドキュメントを参照していただきありがとうございます。私が見つけたほとんどのWeb記事では使用方法を説明しますが、ロケールシステムのデザイン/アーキテクチャについては説明しません。

ベストアンサー1

  1. この値はデータベースから読み取られません。locale対応可能優先順位ルールLANG設定されている場合は設定されていない変数のデフォルト値を決定しLC_LC_ALL設定されている場合はすべての値をオーバーライドします。たとえば、LANGおよびをLC_CTYPE明示的に設定するen_GB.UTF-8とすべての値localeが表示されますが、に設定するとすべての値が表示されます。en_GB.UTF-8LANGfr_FR.UTF-8fr_FR.UTF-8とは別に LC_CTYPE

  2. 変数の読み方は次のとおりです。setlocale機能、ロケールに興味がある場合は、どのプログラムを呼び出すべきか。

  3. locale通常はCライブラリの一部です。

  4. 変数は次に定義されています。POSIX、ほとんどのUnixスタイルシステムに見られる共通のインタフェースを定義する標準です。一部のシステム(またはCライブラリ)には拡張機能があります。GNU Cライブラリは、多くの非標準ロケールカテゴリを定義します。たとえばLC_ADDRESS

また、見ることができますLANG = CとLC_ALL = Cの違いは何ですか?そして地域設定プログラムはどのように機能しますか?

おすすめ記事