Environment-Variables

如何更改語言環境變數?

  • April 17, 2018

我已經生成了 en_US.utf8et_EE.iso88591ru_RU.utf8本地化文件。現在,如果我嘗試將任何語言環境變數更改為ru_RU.utf8en_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"
# 

但是,如果我更改LANG=變數,那麼除LANGUAGE=LC_ALL=之外的所有其他變數都將採用LANG=變數的值。有沒有辦法單獨修改每個語言環境變數?此外,我是否更正了語言環境變數不是正常的 shell 變數,而更像是語言環境實用程序的參數?

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

LANG並且LC_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"

引用自:https://unix.stackexchange.com/questions/74618