ロケール環境変数を変更するには?

ロケール環境変数を変更するには?

私が作成したen_US.utf8et_EE.iso88591そしてru_RU.utf8ローカライズファイル。ここでロケール変数を次に変更しようとするとru_RU.utf8またはen_US.utf8これなら効果はありません。

# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# 

しかし、私が変えれば言語=変数を作成して分割する言語=そしてLC_ALL=言語=変える各ロケール変数を個別に変更する方法はありますか?また、ロケール変数が通常のシェル変数ではなくパラメータに似ていると思うのは正しいですか?ロケール便利?

ベストアンサー1

すべてのロケールカテゴリを個別に設定できます。LANG明示的に設定されていないカテゴリにのみ適用されます。

LANGLC_xxx一般的な環境変数です。これはlocaleユーティリティの設定ではありません。localeプログラムはロケール処理に参加せず、現在および使用可能なロケールを報告する小さなユーティリティーです。

を作成すると、LC_TIME=ru_RU.utf8環境変数は設定されず、シェル変数のみが設定されます。シェル変数はシェルの内部にあり、他のプログラムでは見ることができません。一方、環境変数はシェルから始まるプログラムによって継承されます。また、変数を環境にエクスポートする必要があります。

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

または直接

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

おすすめ記事