我在 ~/.profile 中设置了 LANG 的环境变量,但没有设置

ctr*_*lor 9 bash environment-variables locale

我想设置语言环境。

我的 ~/.profile 中有这个

#language
export LANG=en_GB.utf8
export TESTING123=en_GB.utf8
Run Code Online (Sandbox Code Playgroud)

但是当我输入:

echo $LANG $TESTING123
Run Code Online (Sandbox Code Playgroud)

我得到(未设置 LANG,但已设置 TESTING123)

en_US.utf8 en_GB.utf8
Run Code Online (Sandbox Code Playgroud)

如果我export LANG=en_GB.utf8直接在 shell 中执行,则一切正常

#export LANG=en_GB.utf8
#echo $LANG
en_GB.utf8
#locale
LANG=en_GB.utf8
LANGUAGE=
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

系统是 Debian 7.2,外壳是 bash。

Sly*_*lyx 8

还有许多其他初始化文件,其中变量可以在应用.profile诸如.bash_profile .bashrc...etc之后设置,或者只是从.profile自身调用的其他非标准文件。我建议您首先在主目录中查找变量的每次出现:

grep "LANG=" .* 
Run Code Online (Sandbox Code Playgroud)


Mik*_*kov 7

在 debian 中,您可以使用以下命令设置语言环境:

# dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)

它将创建/etc/default/locale文件并只LANG向其中添加变量。如果你想自定义所有的LC_*变量,你也可以在那里添加它们:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=C
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=C
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=
Run Code Online (Sandbox Code Playgroud)

  • Debian 是一个多用户系统,每个用户都必须有一种方法来拥有自己的语言环境。 (2认同)

gol*_*cks 3

检查是否有~/.bash_profile~/.bash_login; 他们会覆盖~/.profile

man bash

当 bash作为交互式登录 shell或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 中读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按顺序 查找~/.bash_profile~/.bash_login、 和 ,并从第一个存在且可读的文件中读取并执行命令。~/.profile

“作为交互式登录shell”很重要,因为交互式 shell 通常不是登录 shell。例如,如果您只是更改其中一个文件并启动一个新的 GUI 终端,则它将不适用。仅当您实际登录时才会读取它。


另一种可能性是您的 LANG 随后被系统范围重置bashrc;检查是否源自~/.bashrc,然后,例如

grep LANG /etc/bashrc
Run Code Online (Sandbox Code Playgroud)