首页 » 信息技术 »

LC_ALL=C表示什么?

2019年2月22日 / 85次阅读
Linux

  • 打开支付宝,搜索“ 529018372 ”,领取专属红包!每日支付每日领。

在Linux的Bash脚本中总能看到LC_ALL=C,或者LC_ALL=POSIX,这样的语句表示什么意思?

有个叫做“区域”的基本概念,在Linux系统里面,是需要了解的。区域就是世界各地不同区域的意思,LC开头的一些“全局变量”用来进行区域设置,效果就是不同的区域设置,某些程序运行的输出格式不太一样。比如:

[xinlin@localhost ~]$ LC_TIME=en_US.UTF-8 date
Fri Feb 22 15:34:10 CST 2019
[xinlin@localhost ~]$ LC_TIME=fi_FI.UTF-8 date
pe 22.2.2019 15.34.20 +0800
[xinlin@localhost ~]$ LC_TIME=zh_CN.UTF-8 date
2019年 02月 22日 星期五 15:34:28 CST

用locale命令,可以查看所有的区域设置变量:

[xinlin@localhost ~]$ 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=
[xinlin@localhost ~]$ cat /etc/locale.conf
LANG="en_US.UTF-8"

LANG是一个缺省值,所有没有显式设置值的LC_*变量都会取LANG的值。

[xinlin@localhost ~]$ export LC_ALL=C
[xinlin@localhost ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

LC_ALL并不是一个环境变量,而是一个glibc中定义的一个宏,LC_ALL=C这样的语法实际上是调用了setlocale把所有的LC_*的变量设置了一遍,所以在终端中直接echo $LC_TIME等可以输出对应变量的值,但是echo $LC_ALL,不好意思,啥都没有,因为它压根就不是一个变量。

使用locale -a可以列出本机目前可以使用的值。locale -av还可以具体查看这些值更详细的信息。注意:修改LC变量,必须使用export。

设置LC_ALL=C(也可以写成LC_ALL=POSIX,它们是一样的),就是解决各种与区域设置有关的warning。从程序运行角度看,就是保持程序输出的统一格式,这样有些程序才能正确执行下去。

本文链接:https://www.maixj.net/ict/lc-all-20255

相关文章

留言区


前一篇:
后一篇:
推一篇:可靠正规,长期稳定,网络兼职项目!!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top