首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记Centos修改语言环境变量$LANG不生效原因

记Centos修改语言环境变量$LANG不生效原因

作者头像
大大大黑白格子
发布2020-06-10 19:44:15
4.8K0
发布2020-06-10 19:44:15
举报
文章被收录于专栏:云服务笔记云服务笔记
问题背景:

编辑 /etc/locale.conf 改成 LANG="en_US.UTF-8" , 重启服务器后,进入系统,仍然是显示中文

排查分析:(复现问题环境)
  1. 确认当前系统支持 en_US.UTF-8 语言环境(en_US.utf8 和 en_US.UTF-8 两种写法效果一致)
# locale -a | grep en_US
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8                              //英文utf8语言环境是支持的
  1. 确认当前系统生效的语言环境
root@BJ-CentOS7 ~ # echo $LANG
zh_CN.UTF-8                             //生效中的语言环境是中文utf8
root@BJ-CentOS7 ~ # locale
LANG=zh_CN.UTF-8                        //生效中的语言环境是中文utf8
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=
  1. 查看系统中当前配置,确实配置的是英文,并且已经重启过服务器,环境变量$LANG的配置应该生效才对,其他相关配置文件中也没发现相关配置
root@BJ-CentOS7 ~ # grep LANG /etc/locale.conf 
LANG="en_US.UTF-8"
root@BJ-CentOS7 ~ # grep LANG /etc/profile
root@BJ-CentOS7 ~ # grep LANG ~/.bashrc 
  1. 发现VNC下正常生效,远程连接不生效 问题基本清楚了,远程连接时SSH的配置传递了当前环境变量配置到远程主机会话中 ssh配置文件参考简介:https://www.cnblogs.com/52linux/archive/2012/03/24/2415470.html

原来是作为跳板的服务器和要连接的目标服务器中默认配置了 SendEnv 和 AcceptEnv 参数,且客户端和远程主机中都配置了 $LANG 变量,这导致客户端环境中指定的环境变量在远程会话中生效了

客户端 ssh_config 配置文件中:SendEnv 参数用来定义发送哪些环境变量到远程会话中 远程主机 sshd_config 配置文件中:AcceptEnv 参数用来定义接收哪些匹配到的环境变量

root@BJ-CentOS7 ~ # grep AcceptEnv /etc/ssh/sshd_config 
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
root@BJ-CentOS7 ~ # 
root@BJ-CentOS7 ~ # grep SendEnv /etc/ssh/ssh_config 
    SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    SendEnv XMODIFIERS
image.png
image.png
解决方案:
  1. 直接通过远程工具连接服务器,将不受客户端 ssh 配置影响
  2. 在客户端或远程主机SSH配置中去掉$LANG变量传递的相关配置 ssh_config 和 sshd_config 配合文件中分别去掉 SendEnv 和 AcceptEnv 参数后的 LANG 值
image.png
image.png

参考文档: https://www.cnblogs.com/52linux/archive/2012/03/24/2415470.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题背景:
  • 排查分析:(复现问题环境)
  • 解决方案:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档