ロケール環境変数を変更するにはどうすればいいですか?

ロケール環境変数を変更するにはどうすればいいですか?

私は生成しました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明示的に設定されていないカテゴリにのみ適用されます。

LANGおよび はLC_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"

答え2

Fedora/CentOS/RHEL ベースのディストリビューションでは、locale -aこのシステム ファイルでコマンドを実行すると、表示されるロケールのいずれかにロケールを変更できると思います。

/etc/sysconfig/i18n

たとえば、私の Fedora 14 システムの場合:

$ more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

GNOME ではヘルプ アプリを実行できます:

system-config-language

次の GUI が表示されます。

             lang.guiのss

Debian/Ubuntu ディストリビューションの場合は少し異なると思います。次のファイルだと思います:

/etc/default/locale

これらは環境変数だと思いますが、アプリケーションがそれらをどのように利用するのかは完全にはわかりません。

参考文献

答え3

少なくとも RedHat 6 では、LC_ALL が設定されている場合、LC_ALL が他のすべての LC_* 環境変数よりも優先されるため、他の LC_* 環境変数を設定しても効果がないことに注意してください。

[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=

答え4

Debian システムでは、 をdpkg-reconfigure locales実行してメイン言語を設定し、他の言語を利用できるようにします。その後、 を実行して環境変数update-localeを設定し、フォールバック言語を使用できるようにします。LANGUAGE/etc/default/locale

関連情報