码迷,mamicode.com
首页 > 编程语言 > 详细

Linux下语言环境的设定

时间:2019-01-20 15:59:40      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:const   本地   env   -o   参数   提示   默认   bsp   比较   

根据一条常见的常见的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命令查询确认当前语言环境信息,则确认到了问题所在:

[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 ~]# 
  • 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上就支持很多种语言环境:

[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 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

Linux下语言环境的设定

标签:const   本地   env   -o   参数   提示   默认   bsp   比较   

原文地址:https://www.cnblogs.com/firsttry/p/10294881.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!