Linux下语言环境的设定
Posted firsttry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下语言环境的设定相关的知识,希望对你有一定的参考价值。
根据一条常见的常见的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 ~]#
- 1
- 2
- 3
- 4
确认
通过确认LC_相关的环境变量可以了解到设定的不足
[root@devops ~]# env |grep LC
LC_CTYPE=UTF-8
[root@devops ~]#
- 1
- 2
- 3
使用locale命令查询确认当前语言环境信息,则确认到了问题所在:
[[email protected] ~]# 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=
[[email protected] ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
对应方法
对应方法有很多,也会根据OS的不同对应方法略有不同,比如centos下可以通过修改/etc/locale.conf来对LC_相关的环境变量进行设定即可。
[root@devops ~]# grep LC_CTYPE /etc/locale.conf
LC_CTYPE="en_US.UTF-8"
[root@devops ~]#
- 1
- 2
- 3
当然也可以添加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 ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
常用命令
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上就支持很多种语言环境:
[[email protected] ~]# locale -a |wc -l
789
[[email protected] ~]#
[[email protected] ~]# locale -a |head -n 10
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER@saaho
aa_ER.utf8
aa_ER[email protected]
aa_ET
aa_ET.utf8
af_ZA
[[email protected] ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
以上是关于Linux下语言环境的设定的主要内容,如果未能解决你的问题,请参考以下文章
linux打开终端如何启动scala,如何在终端下运行Scala代码片段?
请问能帮忙介绍下“linux定时调用kettle出现乱码”是如何解决的么?
更改语言环境后未调用 onConfigurationChange