我有过一个很少 问题我的 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 则没有命中。有一些错误命中/etc
和LANG=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