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

Linux环境下段错误的产生原因及调试方法小结

[Linux]编写一个简单的C语言程序,编写Makefile文件。

如何在 Linux 环境下 运行 C 语言项目?