查看当前 LANG

有如下三种方法可以查看当前的 LANG.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[CentOS72 ~]$ echo $LANG
zh_CN.UTF-8
[CentOS72 ~]$ locale
LANG=zh_CN.UTF-8
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=
[CentOS72 ~]$ cat /etc/locale.conf
LANG=zh_CN.UTF-8
[CentOS72 ~]$

临时修改 LANG

1
2
3
4
5
[CentOS72 ~]$ date
2016年 09月 13日 星期二 15:59:02 CST
[CentOS72 ~]$ LANG=en_US.UTF-8 date
Tue Sep 13 15:59:17 CST 2016
[CentOS72 ~]$

永久修改 LANG

直接修改“/etc/locale.conf”

1
[CentOS72 ~]$ sudo vim /etc/locale.conf

使用“localectl list-locales”查看可用的 LANG 值

1
2
3
4
5
6
7
8
9
10
11
12
[CentOS72 ~]$ localectl list-locales | grep en_US
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
[CentOS72 ~]$ localectl list-locales | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
[CentOS72 ~]$

修改为英文

1
2
3
[CentOS72 ~]$ localectl set-locale LANG=en_US.UTF-8
[CentOS72 ~]$ cat /etc/locale.conf
LANG=en_US.UTF-8

修改为中文

1
2
3
[CentOS72 ~]$ localectl set-locale LANG=zh_CN.UTF-8
[CentOS72 ~]$ cat /etc/locale.conf
LANG=zh_CN.UTF-8

以上修改都需要重启系统才能生效

流程分析

系统在启动时通过”/etc/profile.d/lang.sh”加载“/etc/locale.conf”中的 LANG 环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[CentOS72 ~]$ head -n14 /etc/profile.d/lang.sh | cat -n
# /etc/profile.d/lang.sh - set i18n stuff
 sourced=0
 if [ -n "$LANG" ]; then
 saved_lang="$LANG"
 [ -f "$HOME/.i18n" ] && . "$HOME/.i18n" && sourced=1
 LANG="$saved_lang"
 unset saved_lang
 else
 for langfile in /etc/locale.conf "$HOME/.i18n" ; do
 [ -f $langfile ] && . $langfile && sourced=1
 done
fi
[CentOS72 ~]$

参考资料

解决Centos7下中文显示乱码
CentOS7修改操作系统语言方法

参与评论