LANG 环境变量

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LANG 环境变量相关的知识,希望对你有一定的参考价值。

中文系统

大家常用的 Linux 系统,为了方便使用,通常设置成了中文环境,这时候,命令的输出信息往往也是中文,如

$ free -h
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:       7.8Gi       2.9Gi       216Mi       247Mi       4.6Gi       4.4Gi
交换:       2.0Gi        87Mi       1.9Gi

$ man ls
LS(1)                                             General Commands Manual                                            LS(1)

NAME
       ls, dir, vdir - 列目录内容

提要
       ls [选项] [文件名...]

       POSIX 标准选项: [-CFRacdilqrtu1]

GNU 选项 (短格式):
       [-1abcdfgiklmnopqrstuxABCDFGLNQRSUX]      [-w      cols]      [-T      cols]     [-I     pattern]     [--full-time]
       [--format=long,verbose,commas,across,vertical,single-column]                  [--sort=none,time,size,extension]
       [--time=atime,access,use,ctime,status] [--color[=none,auto,always]] [--help] [--version] [--]

描述( DESCRIPTION )
       程序ls先列出非目录的文件项,然后是每一个目录中的“可显示”文件。如果   没有选项之外的参数【译注:即文件名部分为空】出
       现,缺省为 "." (当前目录)。 选项“ -d ”使得目录与非目录项同样对待。除非“ -a ” 选项出现,文 件名以“.”开始的文件不属
       “可显示”文件。
......

英文显示

但是,这些中文输出往往来自机器翻译,或者不专业的人工翻译。这样,对于理解原意有时会造成困扰。这个时候,我们更希望系统输出原始英文。
怎么办呢?
LANG 环境变量可以帮你解决这个问题。

$ echo $LANG
zh_CN.UTF-8

LANG 环境变量默认为 zh_CN.UTF-8,因为我安装系统是选择的是中文。
我们只要修改一下这个环境变量的值就可以了

$ LANG=C

再来看下显示

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.9Gi       216Mi       247Mi       4.6Gi       4.4Gi
Swap:         2.0Gi        87Mi       1.9Gi
$ man ls
LS(1)                                     User Commands                                     LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information about the FILEs (the current directory by default).  Sort entries alpha-
       betically if none of -cftuvSUX nor --sort is specified.

这样就能看到原始英文表述了。
如, free 命令显示的结果,“Swap” 肯定比 “交换” 意思更准确无歧义。
如,man ls 命令显示的结果,“list directory contents” 肯定比 “列目录内容” 意思更清楚。
吐槽一下,“列目录内容” 。。。, 什么鬼。。。🙄

更进一步

一个疑问,LANG 环境变量都可以设置为什么值呢?
可以使用 locale 命令查看

$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
zh_CN.utf8
zh_SG.utf8

这里解释一下 “C” 的含义,“C” 在这里指 ASCII 的意思。

以上是关于LANG 环境变量的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.ClassNotFoundException 尽管使用了 CLASSPATH 环境变量

环境变量NLS_LANG

如何给变量取个简短且无歧义的名字

LANG 环境变量

LANG 环境变量

LANG 环境变量