Linux下语言环境的设定
根据一条常见的常见的ssh命令的提示信息,简单整理内容如下:一条错误的确认现象本地的virtual box的一个安装了centos7.4虚拟机,通过ssh登陆时候提示了如下错误:liumiaocn:etc liumiao$ ssh devopsLast login: Fri Jan 19 04:23:38 2018 from 192.168.163.2-bash: warn
根据一条常见的常见的ssh命令的提示信息,简单整理内容如下:
一条错误的确认
现象
本地的virtual box的一个安装了centos7.4虚拟机,通过ssh登陆时候提示了如下错误:
liumiaocn:etc liumiao$ ssh devops
Last login: Fri Jan 19 04:23:38 2018 from 192.168.163.2
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
[root@devops ~]#
确认
通过确认LC_相关的环境变量可以了解到设定的不足
[root@devops ~]# env |grep LC
LC_CTYPE=UTF-8
[root@devops ~]#
使用locale命令查询确认当前语言环境信息,则确认到了问题所在:
[root@devops ~]# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@devops ~]#
对应方法
对应方法有很多,也会根据OS的不同对应方法略有不同,比如centos下可以通过修改/etc/locale.conf来对LC_相关的环境变量进行设定即可。
[root@devops ~]# grep LC_CTYPE /etc/locale.conf
LC_CTYPE="en_US.UTF-8"
[root@devops ~]#
当然也可以添加LC_ALL,效果也是一样,再次登陆则不会提示该错误
liumiaocn:etc liumiao$ ssh devops
Last login: Fri Jan 19 04:38:27 2018 from 192.168.163.2
[root@devops ~]# env |grep LC
LC_CTYPE=en_US.UTF-8
[root@devops ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@devops ~]#
常用命令
locale常用如下两种用法:
locale :确认当前语言环境信息
locale -a:确认可用的语言环境
LC系环境变量
我们是通过修改LC_CTYPE达到了目的,LC_CTYPE是一个非常重要的变量,其用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。除此之外还有很多其他的变量诸如:
变量 | 说明 |
---|---|
LC_NUMERIC | 非货币的数字显示格式 |
LC_TIME | 时间和日期格式 |
LC_COLLATE | 排序和比较规则 |
LC_MONETARY | 货币格式 |
LC_MESSAGES | 提示信息的语言 |
注意事项:
LANGUAGE的作用和LC_MESSAGES相似都是用于设定语言信息,只不过LANGUAGE范围更广,一旦LANGUAGE设定,LC_MESSAGES已经设定的内容则不再会起作用。
LANGUAGE可以同时设定多个参数,用:隔开
LC_ALL,如果该值设置了,则该值会覆盖所有LC_*的设置值。
LANG环境变量
通过设定LANG可以临时或者永久的设定语言环境,export的作用域在于当前终端,如果写到/etc/profile中,则对所有的用户永久起作用
注意事项:
LANG,LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。
LANG的值不受LC_ALL影响
locale
命名格式
locale所支持的命名格式为: 语言类型_区域.字符集, 比如
locale信息 | 语言类型 | 区域 | 字符集 |
---|---|---|---|
en_US.UTF-8 | 英语 | 美国 | UTF8 |
zh_CN.GBK | 中文 | 中国 | 简体和繁体中文中文字符集 |
zh_CN.gb2312 | 中文 | 中国 | 简体中文中文字符集 |
… |
locale的总类很多,比如在centos上就支持很多种语言环境:
[root@devops ~]# locale -a |wc -l
789
[root@devops ~]#
[root@devops ~]# locale -a |head -n 10
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
aa_ER.utf8
aa_ER.utf8@saaho
aa_ET
aa_ET.utf8
af_ZA
[root@devops ~]#
更多推荐
所有评论(0)