如何找到 LANG、LANGUAGE 和 MAIL 环境变量的设置位置?

如何找到 LANG、LANGUAGE 和 MAIL 环境变量的设置位置?

我有过一个很少 问题我的 Raspbmc Raspberry Pi 中的环境变量设置不正确。具体来说,我必须在~/.bashrc.

export LANG='en_AU.UTF-8"
export LANGUAGE='en_AU:en'
export MAIL='/var/mail/pi'

然而,在另一个运行 vanilla Raspbian 的 Pi 中,这些环境变量设置正确。我想看看哪个文件指定了这些,但找不到它。我测试了我所知道的登录终端时运行的文件。这些没有造成任何打击。

grep LANG -r /etc/profile /etc/profile.d/ /etc/bash.bashrc ~/.profile ~/.bashrc /etc/environment
grep MAIL -r /etc/profile /etc/profile.d/ /etc/bash.bashrc ~/.profile ~/.bashrc /etc/environment

相反,在我的笔记本电脑上运行 Arch,/etc/profile.d/locale.sh似乎设置LANG,并~/.profile指定LANGUAGE。但是,我找不到任何提及MAIL

如何找到这些环境变量的设置位置?


编辑

我在工作系统(Raspbian)中搜索了整个字符串/etc并查找了这些字符串。~

grep "\bMAIL=" -r /etc 2>/dev/null
grep "\bMAIL=" -r ~ 2>/dev/null

搜索 MAIL 没有找到结果。

grep "\bLANG=" -r /etc 2>/dev/null
grep "\bLANG=" -r ~ 2>/dev/null

该策略只为 LANG 提供了一些命中/etc,而对于 LANGUAGE 则没有命中。有一些错误命中/etcLANG=C一个真实命中(如提及经过温克17) 在/etc/default/locale:LANG=en_AU.UTF-8。然而(根据上一个问题由我来说),这个文件/etc/default/locale不是来源于我的 Raspbmc 机器,所以我认为情况比仅仅存在这个文件要复杂一些。

答案1

更令人困惑的是,如果您使用 SSH 远程登录,您的 SSH 客户端将允许使用您的客户端设置/首选项覆盖(部分)系统默认值...

这是由文件AcceptEnv中的指令控制的sshd_config,例如:

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

相关内容