如何更改區域設定環境變數?

如何更改區域設定環境變數?

我已經生成了en_US.utf8,et_EE.iso88591ru_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=取值語言=多變的。有沒有辦法單獨修改每個區域設定變數?另外,我是否正確地認為區域設定變數不是常規的 shell 變量,而更像是參數語言環境公用事業?

答案1

您可以獨立設定任何區域設定類別。LANG僅適用於未明確設定的類別。

LANGLC_xxx是普通的環境變數。它們不是locale實用程式的設定:locale程式不參與任何區域設定處理,它只是一個報告當前和可用區域設定的小實用程式。

當您編寫 時LC_TIME=ru_RU.utf8,這不會設定環境變量,而只會設定 shell 變數。 Shell 變數是 shell 的內部變量,其他程式看不到它們。另一方面,環境變數由 shell 啟動的程式繼承。您還需要將變數匯出到環境:

$ 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

locale -a在基於 Fedora/CentOS/RHEL 的發行版下,我相信您可以將區域設定更改為在此系統檔案中執行命令時顯示的區域設定之一:

/etc/sysconfig/i18n

例如在我的 Fedora 14 系統上:

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

在 GNOME 下,您可以執行幫助應用程式:

system-config-language

這會彈出這個 GUI:

             郎的黨衛軍。桂

我認為 Debian/Ubuntu 發行版略有不同。我相信是這個文件:

/etc/default/locale

我相信它們是環境變量,但不完全確定應用程式如何使用它們(如果有的話)。

參考

答案3

至少在 RedHat 6 上,請注意,如果設定了 LC_ALL,則設定其他 LC_* 環境變數將不起作用,因為 LC_ALL 優先於所有其他 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使用後備語言。

相關內容