Mar*_*tin 17 environment-variables locale
我已经生成了en_US.utf8、et_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"
#
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改LANG=变量,则除LANGUAGE=和LC_ALL= 之外的所有其他变量都采用LANG=变量的值。有没有办法分别修改每个语言环境变量?另外,语言环境变量不是常规的 shell 变量,而是更像是语言环境实用程序的参数,我是否正确?
Gil*_*il' 18
您可以独立设置任何语言环境类别。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"
Run Code Online (Sandbox Code Playgroud)
或直接
$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
Run Code Online (Sandbox Code Playgroud)
在基于 Fedora/CentOS/RHEL 的发行版下,我相信您可以将区域设置更改为locale -a
在此系统文件中运行命令时显示的区域设置之一:
/etc/sysconfig/i18n
Run Code Online (Sandbox Code Playgroud)
例如在我的 Fedora 14 系统上:
$ more /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
Run Code Online (Sandbox Code Playgroud)
在 GNOME 下,您可以运行帮助应用程序:
system-config-language
Run Code Online (Sandbox Code Playgroud)
这带来了这个GUI:
我认为 Debian/Ubuntu 发行版略有不同。我相信这是这个文件:
/etc/default/locale
Run Code Online (Sandbox Code Playgroud)
我相信它们是环境变量,但并不完全确定应用程序如何使用它们。