CentOS 设置Locale
-
登录OS后提示
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): 没有那个文件或目录
需要设置locale 文件的LC CTYPE
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=en_US.UTF-8
locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:
1、语言符号及其分类(LC_CTYPE)
2、数字(LC_NUMERIC)
3、比较和排序习惯(LC_COLLATE)
4、时间显示格式(LC_TIME)
5、货币单位(LC_MONETARY)
6、信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等(LC_MESSAGES)
7、姓名书写方式(LC_NAME)
8、地址书写方式(LC_ADDRESS)
9、电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式 (LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。
因为LC_ALL设置了en_US.UTF-8 而且LC_CTYPE没有设置,所以CTYPE会默认继承ALL的设置
优先级的关系:
LC_ALL>LC_*>LANG
LC_ALL的值将覆盖所有其他的locale设定
locale -a | grep zh
这里的grep ,你上面的LC_ALL设置的是什么就设置什么
比如我的LC_ALL是en,这里我就查询grep en 得到如下结果
locale: Cannot set LC_CTYPE to default locale: No such file or directory
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
编辑/etc/sysconfig/i18n
vim /etc/sysconfig/i18n
#添加一行
LC_CTYPE="en_US.utf8"
#这里的en_US.utf8取决于上一行命令取得的语言值
source /etc/sysconfig/i18n
退出bash 重新登录,发现没有错误提示了