美文网首页Shellshell
【现学现忘&Shell基础】— 15.环境变量(三)

【现学现忘&Shell基础】— 15.环境变量(三)

作者: 繁华似锦Fighting | 来源:发表于2020-04-08 00:08 被阅读0次

    四、系统自带的环境变量——LANG语系变量

    1、LANG语系变量介绍

    我们之前说过中文输出的问题,Linux系统的中文支持包括两个前提条件:

    • 安装了中文字体和编码(安装的时候选择中文安装就安装过了)
    • 操作终端必须支持中文编码。

    而LANG变量定义了Linux系统的主语系环境,查看变量的默认值是:

    [root@localhost ~ ] # echo $LANG 
    zh_CN.UTF-8
    

    这是因为我们Linux安装时,选择的是中文安装,所以默认的主语系变量就是zh_CN.UTF-8

    上边是通过远程终端查询的,而进入到系统自带的命令行终端执行上边命令,结果如下:

    可以看到上图中显示的是英文语言en_US.UTF-8,因为之前我们也说过,Linux的纯字符界面是不支持中文显示的(也就是不识别中文编码)。如果非要让Linux系统的纯字符界面显示中文,就需要安装中文插件。其实没有必要,因为我们的服务器一般都是在远程,我们很少会本机操作,通常使用远程终端登陆服务器,所有的远程终端基本上都是支持中文编码的。

    总结:LANG变量显示的编码就是当前系统的现实语言。

    2、如何查看Linux中支持的语系呢?

    我们可以使用以下命令查询:
    [root@localhost ~ ] # locale -a

    如下图:

    Linux系统基本上支持所有的语言,一共可以支持700多种语言编码。

    [root@localhost ~ ]#  locale -a | more | wc -l
    735
    

    但要注意一点的是,这里是显示支持的语言,而你有没有安装相应的编码,又是另外一回事。

    3、查看当前系统的语系

    使用locale命令直接查看当前系统的语言环境。

    可以从上图看出,因为我们安装时候选择的是中文安装,Linux系统中的这些默认语系就是人中文编码。

    我们还要通过文件/etc/sysconfig/i18n文件,定义系统的默认语系。所谓默认语系,也就是开机之后,Linux系统就支持的语系。

    查看下这个文件的内容:

    [root@localhost src]# cat /etc/sysconfig/i18n 
    LANG="zh_CN.UTF-8"
    

    这又是当前系统语系,又是默认语系。我们可以这样理解,默认语系是下次重启之后系统所使用的语系,而当前系统语系是当前系统使用的语系。如果系统重启,会从默认语系配置文件/etc/sysconfig/i18n中读出语系,然后赋予变量LANG让这个语系生效。也就是说,LANG定义的语系只对当前系统生效,要想永久生效就要修改/etc/sysconfig/i18n文件了。

    4、总结

    上边的描述有的地方看起来很乱,我们这里总结一下:

    • 查看Linux中支持的语系
      可执行[root@localhost ~ ] # locale -a命令。
      查询的结果只代表支持语言,并不代表安装了该语言编码。
    • 查看当前系统的语言环境
      可执行[root@localhost ~ ] # locale命令。
    • /etc/sysconfig/i18n文件中存储的是系统默认使用的字符集。是Linux系统开机就生效的,和终端没有关系。所以LANG变量的值,开机默认就是/etc/sysconfig/i18n文件中存储属性。
    • 在开机之后设置的LANG变量是临时生效的。

    最后我们在总结一下Linux系统中文显示的问题:

    我们需要解释下Linux中文支持的问题。是不是我们只要定义了语系为中文语系,如zh_CN.UTF-8就可以正确显示中文了呢?

    这要分情况:
    (1)如果我们是在图形界面中,或者是使用远程连接工具(如SecureCRT),只要正确设置了语系,那么是可以正确显示中文的,当然远程连接工具也要配置正确的中文语系环境。
    总结两点:

    • 安装了中文字体和编码。
    • 操作终端必须支持中文编码。

    (2)那么如果是纯字符界面(本地终端 tty1-tty6)是不能显示中文的,因为Linux的纯字符界面是不能显示中文这么复杂的编码的。如果我们非要在纯字符界面显示中文,那么只能安装中文插件,如zhcon等。

    相关文章

      网友评论

        本文标题:【现学现忘&Shell基础】— 15.环境变量(三)

        本文链接:https://www.haomeiwen.com/subject/jgtuphtx.html