P.S. 本文不讲linux如何配置语言环境变量linux
服务器明明配置的是英文,可是使用不一样的机器ssh登陆服务器时,发现服务器的系统语言有时中文有时英文
使用locale
命令执行后发现,不管locale.conf
配置的是什么,实际的语言环境都在变centos
[root@lc-dev ~]# cat /etc/locale.conf LANG="en_US.UTF-8" [root@lc-dev ~]# locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:en_US:en LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC=zh_CN.UTF-8 LC_TIME=zh_CN.UTF-8 LC_COLLATE="zh_CN.UTF-8" LC_MONETARY=zh_CN.UTF-8 LC_MESSAGES="zh_CN.UTF-8" LC_PAPER=zh_CN.UTF-8 LC_NAME=zh_CN.UTF-8 LC_ADDRESS=zh_CN.UTF-8 LC_TELEPHONE=zh_CN.UTF-8 LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=zh_CN.UTF-8 LC_ALL=
猜想应该是ssh登陆的时候干了什么,而后使用ssh登陆时的-v
参数看下登陆过程当中的调试信息,发如今经过认证最后登陆前,有一个发送环境变量的动做服务器
maming@maming-Home:~$ ssh -v root@192.168.2.2 OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014 # ... # 此处省略了一些没用的输出 # ... debug1: Sending environment. debug1: Sending env LC_PAPER = zh_CN.UTF-8 debug1: Sending env LC_ADDRESS = zh_CN.UTF-8 debug1: Sending env LC_MONETARY = zh_CN.UTF-8 debug1: Sending env LC_NUMERIC = zh_CN.UTF-8 debug1: Sending env LC_TELEPHONE = zh_CN.UTF-8 debug1: Sending env LC_IDENTIFICATION = zh_CN.UTF-8 debug1: Sending env LANG = zh_CN.UTF-8 debug1: Sending env LC_MEASUREMENT = zh_CN.UTF-8 debug1: Sending env LC_TIME = zh_CN.UTF-8 debug1: Sending env LC_NAME = zh_CN.UTF-8 Last login: Sat Nov 11 19:20:26 2017 from 192.168.2.192 [root@lc-dev ~]#
因此可知,使用ssh登陆的时候,ssh会将客户端语言相关的环境变量同时发送过去,设置目标服务的环境变量。好比若是客户端是中文,发过去就是中文配置,至关于在服务器上执行了下 export LANG=zh_CN.UTF-8
命令,因此在服务器上使用locale
看到的就是中文的字符界面ssh
那若是想服务器始终保持本身配置的语言环境的话,能够经过如下2种方式实现。google
第一种修改客户端的ssh配置,注释掉/etc/ssh/ssh_config
文件中SendEnv LANG LC_*
这一行,在登陆的时候不发送环境变量
第二种修改服务器的ssh配置,注释掉/etc/ssh/sshd_config
文件中AcceptEnv LANG LC_*
这一行,拒绝接收客户端发送来的环境变量spa
若是是修改服务器的ssh配置,须要重启sshd服务debug
# centos 6.x 环境 [root@lc-dev ~] /etc/init.d/sshd restart # centos 7.x 环境 [root@lc-dev ~] systemctl restart sshd # other 环境 # 自行google.com重启sshd服务的方法