的因素有两个:
您可使用带有外壳
- 内置回波(并没有被告知,要更改的语言环境的外壳)
LANG
不是检查第一个环境变量。据locale(7)
,LC_ALL
和LC_CTYPE
将首先检查:
If the second argument to setlocale(3) is an empty string, "", for
the default locale, it is determined using the following steps:
1. If there is a non-null environment variable LC_ALL, the value
of LC_ALL is used.
2. If an environment variable with the same name as one of the
categories above exists and is non-null, its value is used for
that category.
3. If there is a non-null environment variable LANG, the value of
LANG is used.
对于后者,看看从locale
命令,它会列出所有将要使用的环境变量的输出:
$ export LANG=ru_RU.KOI8-R
$ locale
LANG=ru_RU.KOI8-R
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
只是改变LANG
不应CH愤怒的其他变量,但改变LC_ALL
一般这样做。
$ export LC_ALL=ru_RU.KOI8-R
$ locale
LANG=ru_RU.KOI8-R
LANGUAGE=
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=ru_RU.KOI8-R
发表了一个适用于'bash' shell的答案,其登录shell是'urxvt'使用? – Inian
通过'urxvt'读取哪些启动文件,在那里添加包含更改语言环境的行。它应该反映它为您的所有后续会话。 – Inian
可能它使用bash。 '在那里添加更改语言环境的行 - - 问题不在于更改语言环境,而是在CURRENT会话中更改它。我知道我可以把这行放在.bash_profile或.bashrc - 但这不是我想要的。 –