LANG 变量定义了 Linux系统的主语系环境,这个变量的默认值如下:

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

这是因为我们在安装 Linux 时选择的是中文安装,所以默认的主语系变量是"zh_CN.UTF-8"。那么,Linux 系统中到底支持多少种语系呢?我们可以使用以下命令查询:

[root@localhost src]# locale -a | more
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
…省略部分输出…
#查询支持的语系
[root@localhost src]# locale -a | wc -l
735
#实在太多,这里只统计数量

既然 Linux 系统支持这么多种语系,那么当前系统使用的到底是什么语系呢?使用 locale 命令直接查询,命令如下:

[root@localhost src]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8n
LC_NAME="zh_CN.U 丁 F-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8n
LC_MEASUREMENT="zh_CN.U 丁 F-8"
LC_IDENTIFICATI0N=Mzh_CN.UTF-8M
LC_ALL=

在 Linux 系统中,语系主要是通过这些变量来设置的,这里只需知道 LANG 和 LC_ALL 变量即可,其他的变量会依赖这两个变量的值而发生变化。LANG 是定义系统主语系的变量,LC_ALL 是定义整体语系的变量,一般使用 LANG 变量来定义系统语系。

我们还要通过文件 /etc/sysconfig/i18n (centos7中改为 /etc/locale.conf )定义系统的默认语系,查看一下这个文件的内容,如下:

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

这又是当前系统语系,又是默认语系,有没有快晕倒的感觉?解释一下吧,我们可以这样理解:默认语系是下次重启之后系统所使用的语系;而当前系统语系是当前系统所使用的语系。

如果系统重启,则会从默认语系配置文件 /etc/sysconfig/i18n 中读出语系,然后赋予变量 LANG,让这个语系生效。也就是说,LANG 变量定义的语系只对当前系统生效;要想永久生效,就要修改 /etc/sysconfig/i18n 文件。

说到这里,我们需要解释一下 Linux 中文支持的问题。是不是只要定义了语系为中文语系,如 zh_CN.UTF-8,就可以正确显示中文了呢?这要分情况,如果是在图形界面中,或者使用远程连接工具(如 SecureCRT、Xshell 等),那么,只要正确设置了语系,是可以正确显示中文的。当然,远程接工具也要配置正确的语系环境。

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

举个例子,先来看看在远程连接工具中显示中文的情况,如下:

[raot@localhost src]# echo $LANG
zh_CN.UTF-8#当前使用远程连接工具,只要语系正确,就可以正确显示中文[root@localhost src]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda3 19923216 1813532 17097616 10%/
tmpfs 312672 0 312672 0%/dev/shm
/dev/sda1 198337 26359 161738 15%/boot#使用df命令可以看到中文是正常显示的

但如果是纯字符界面呢?虽然 Linux 是中文安装的,但纯字符界面的语系却是"en_US.UTF~8",如图 1 所示。

图 1 纯字符界面的语系
我们更改语系为中文,看看会出现什么情况,如图 2 所示。

图 2 纯字符界面设置中文语系
如果我们非要在纯字符界面中设置中文语系,就会出现乱码。怎么解决呢?安装 zhcon 中文插件即可解决

linux LANG变量 定义系统的主语系环境相关推荐

  1. Ubuntu系统操作之一:环境变量设置

    Ubuntu系统环境变量设置 1 概述 2 区分"环境变量"和"SHELL变量" 3 更改变量 3.1 方法一:更改用户主目录下的.profile或.bashr ...

  2. Arch Linux 指南——安装基本系统

    目录 Arch Linux 指南--安装基本系统 安装前准备 环境检查 分区 安装 配置基础系统 完成安装 Arch Linux 指南--安装基本系统 本文是自己安装 Arch Linux 的过程,记 ...

  3. Linux 命令之 env -- 显示系统的环境变量,定义执行命令时的环境变量

    文章目录 一.命令介绍 二.选项参数 三.命令示例 (一)显示系统的环境变量 (二)从当前环境中删除指定的变量 (三)定义指定的环境变量 (四)在一个修改后的环境下执行命令 一.命令介绍 env命令用 ...

  4. Linux系统 熟练掌握 shell环境变量

     熟练掌握 shell环境变量      shell就是用户与操作系统内核之间的接口,起着协调用户与系统的一致性和在用户与系统之间进行交互的作用.      shell支持具有字符串值的变量.shel ...

  5. linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

  6. linux shell脚本 定义变量,Shell脚本应用 - 编制shell脚本、shell变量

    随着Linux系统在企业中的应用越来越多,服务器的自动化管理也变得越来越重要.在Linux服务器的自动化维护工作中,除了计划任务的设置以外,Shell脚本的应用也是非常重要的一部分.作为Linux系统 ...

  7. 如何设置linux lang环境变量,设置linux环境变量LANG(示例代码)

    export LANG="zh_cn.gb118030" 一般来说要设置 Linux 系统的环境变量只需要在 /etc/profile (全局) 或者 ~/.bashrc (单个用 ...

  8. linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...

    Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...

  9. 进阶:变量 1.系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面。 注意:(1) 全局变量需要添加global关键字 (2) 会话变量需要添加session键字 (3)

    进阶:变量 1.系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面. 注意:(1) 全局变量需要添加global关键字 (2) 会话变量需要添加session关键字 (3) 如果不写,默认s ...

最新文章

  1. phantomjs使用说明
  2. lvs为何不能完全替代DNS轮询--转
  3. 小米10的Android安全更新,MIUI 12首批更新名单被曝光,小米10系列优先上Android 11...
  4. 安装kickstart失败
  5. 头部电商平台如何在大促时,优雅的赚钱?
  6. Linux基础(3)--搭建最小的Linux系统
  7. LG深化与苹果合作,扩大向苹果供应OLED
  8. Openlayer通过wms请求geoserver加载慢
  9. SEP客户端部署方式及故障处理手册____借鉴文档的思路方法
  10. 分享Netsparker - Community Edition运用程序。
  11. Cloudera迁移scm数据库
  12. 美国人口普查数据预测收入sklearn算法汇总2: 特征编码, 特征选择, 降维, 递归特征消除
  13. 实用工具SDelete
  14. 币圈IDO与ICO/IPO的区别和联系
  15. Draftsharks回顾周末梦幻足球
  16. CSS-----颜色值的缩写和字体的缩写方法
  17. Java如何绘制圆锥,五、Unity 生成几种常用模型mesh-----ConeShape(圆锥体)
  18. 计算机学院毕业典礼口号,大学毕业典礼横幅标语大全
  19. bigemap地图下载器 好用吗?
  20. Alist+KODI打造免费家庭影院

热门文章

  1. VSCode中屏蔽文件files.exclude和屏蔽文件搜索search.exclude
  2. 全能终端神器——MobaXterm
  3. 10行代码-原生JS双向数据绑定演示
  4. mybatis if标签比较字符串
  5. char 转为 int 类型
  6. Spring IoC 学习(3)
  7. 未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker...
  8. 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用...
  9. Unity3D绑定button监听事件
  10. 关于AJAX和JSON的学习总结和使用。