我花了很多时间ssh
在各种机器上,它们都是不同的(有些是嵌入式的,有些是运行Linux的,有些是运行BSD的,等等)。但是,在我自己的本地计算机上,我使用OS X,它当然具有基于BSD的用户区。这些机器上的我的语言环境设置为en_GB.UTF-8,这是可用的选项之一:
% echo `sw_vers`
ProductName: Mac OS X ProductVersion: 10.8.2 BuildVersion: 12C60
% locale -a | grep -i 'en_gb.utf'
en_GB.UTF-8
我使用的一些功能更强大的Linux系统似乎具有等效的选项,但是我注意到在Linux上,名称略有不同:
% lsb_release -d
Description: Debian GNU/Linux 6.0.3 (squeeze)
% locale -a | grep -i 'en_gb.utf'
en_GB.utf8
这让我感到奇怪:当我ssh
从Mac进入Linux机器时,它LC_*
使用后缀'UTF-8' 转发了我所有的变量,那台Linux机器是否还明白要求什么?还是只是回到其他语言环境?
编辑:这是我所指的示例:
% ssh -v odin
...
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_ALL = en_GB.UTF-8
debug1: Sending env LC_COLLATE = en_GB.UTF-8
debug1: Sending env LC_CTYPE = en_GB.UTF-8
debug1: Sending env LC_MESSAGES = en_GB.UTF-8
debug1: Sending env LC_MONETARY = en_GB.UTF-8
debug1: Sending env LC_NUMERIC = en_GB.UTF-8
debug1: Sending env LC_TIME = en_GB.UTF-8
debug1: Sending env LANG = en_GB.UTF-8
odin:~ % locale | tail -1 # locale is set to .UTF-8 without error...
LC_ALL=en_GB.UTF-8
odin:~ % locale -a | grep 'en_GB.UTF-8' # ... even though .UTF-8 isn't an option
odin:~ %
在这两种情况下,其行为背后的机制是什么,它是否依赖于任何特定的设置(例如,我是否会在基于BusyBox的系统上看到与基于GNU的系统相同的行为)?