环境变量 LC_ALL 默认始终未设置。为什么 LC_ALL 未设置?

环境变量 LC_ALL 默认始终未设置。为什么 LC_ALL 未设置?

为什么LC_ALL在 Linux 和 Unix 机器上总是默认未设置?

例如,在 Linux 上:

root@icubes:[~]# 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=

在 AIX 上:

root@matic:[/]# locale
LANG=en_US
LC_COLLATE="en_US"
LC_CTYPE="en_US"
LC_MONETARY="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_MESSAGES="en_US"
LC_ALL=

答案1

这是正常的;在正常使用期间不应该设置它。LC_ALL 的目的是覆盖所有其他区域设置(即LANGLC_*),因此唯一需要设置它的情况是当您想要在不同的语言环境下临时运行某个特定程序时。

因此,如果您默认设置了 LC_ALL,那么将会发生的情况是,所有其他区域设置参数都将变得无用。

(优先级顺序为LANG< LC_*< LC_ALL。所有单独的参数都从 LANG 获取初始值,并且可以使用 LC_* 单独定制,但 LC_ALL 将覆盖所有参数。)

相关内容