『忘了再学』Shell基础 — 15、环境变量(三)
提示:
在Linux系统中,环境变量分为两种。一种是用户自定义的环境变量,另一种是系统自带的环境变量。
而在系统自带的环境变量中,PATH环境变量、PS1环境变量、LANG语系变量需要进行说明一下。
本篇文章主要说明系统自带的环境变量中的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、环境变量(三)的更多相关文章
- 『忘了再学』Shell基础 — 11、变量定义的规则和分类
目录 1.定义变量的规则 2.变量的分类 1.定义变量的规则 在定义变量时,有一些规则需要遵守 变量名称可以由字母.数字和下划线组成,但是不能以数字开头.如果变量名是2name则是错误的. 在Bash ...
- 『忘了再学』Shell基础 — 21、变量的测试与内容置换
目录 1.什么是变量的测试与内容置换 2.变量的测试与内容置换 3.示例 例1: 例2: 例3: 1.什么是变量的测试与内容置换 我们之前说过,在Shell中,一个变量未定义,和一个变量为空值的输出效 ...
- 『忘了再学』Shell基础 — 13、环境变量(一)
目录 1.用户自定义的环境变量 (1)环境变量设置 (2)查询自定义环境变量 (3)删除自定义环境变量 2.系统自带的环境变量--PATH环境变量 (1)PATH环境变量 (2)PATH环境变量的作用 ...
- 『忘了再学』Shell基础 — 22、主要的环境变量配置文件说明
目录 1.source命令 2.Linux系统中环境变量配置文件 (1)登录时生效的环境变量配置文件 (2)/etc/profile环境变量配置文件 (3)/etc/profile.d/*.sh环境变 ...
- 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)
提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...
- 『忘了再学』Shell基础 — 4、Bash基本功能(history命令)
目录 1.history历史命令 2.设置命令历史记录的条数 3.清空历史命令 4.历史命令的调用 5.命令与文件的补全 在Linux系统中默认的Shell就是Bourne-AgainShell(简称 ...
- 『忘了再学』Shell基础 — 23、其他环境变量配置文件
目录 1.注销时生效的环境变量配置文件 2.其他配置文件 3.Shell登录信息相关文件 (1)/etc/issue文件说明 (2)/etc/issue.net文件说明 (3)/etc/motd文件说 ...
- 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)
目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...
- 『忘了再学』Shell基础 — 12、用户自定义变量
目录 1.变量定义 2.变量调用 3.变量的修改 4.查看变量 (1)-u选项说明: (2)-x选项说明: (3)set命令说明: 5.变量删除 1.变量定义 变量正确定义. 格式:变量名=" ...
随机推荐
- jdk_8接口的内部内容
目标: 如何创建已定义好的接口类型的对象呢? 步骤: 实现的概述 抽象方法的使用 默认方法的使用 静态方法的使用 接口的常量使用 讲解: 实现的概述 类与接口的关系为实现关系,即类实现接口,该类可以称 ...
- <img> 标签 图片加载失败时候处理方案
应用场景 在开发中,经常遇到一种情况,数据库不存在图片地址,或者存在图片地址,但图片已经被删除,这个时候会出现加载失败情况.提供以下解决方案 解决方案 在 img 标签 加上onerror=" ...
- python-模拟页面调度LRU算法
[题目描述]所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面. 问题描述:一进程获得n个主存块的使用权,对于给定的进程访问页面次序,问当采用LR ...
- python-产生每位数字相同的n位数
读入2个正整数A和B,1<=A<=9, 1<=B<=10,产生数字AA...A,一共B个A 输入格式: 在一行中输入A和B. 输出格式: 在一行中输出整数AA...A,一共B个 ...
- JS 实现权限列表移动
JS 实现列表移动 学习内容: 需求 总结: 学习内容: 需求 用 JS 实现列表移动 实现代码 <html> <head> <meta http-equiv=" ...
- Python入门-异常处理
异常处理 #try----else---- 会一起执行 #finally无论如何,最后都会执行 def main(): try: res = 10/2 print("开始执行计算:" ...
- 基于Apache Hudi在Google云构建数据湖平台
自从计算机出现以来,我们一直在尝试寻找计算机存储一些信息的方法,存储在计算机上的信息(也称为数据)有多种形式,数据变得如此重要,以至于信息现在已成为触手可及的商品.多年来数据以多种方式存储在计算机中, ...
- Java 使用-安装
Java 使用-安装 官方网站 JDK 下载地址 JDK 历史版本 参考资料 CentOS7系统卸载自带的OpenJDK并安装SUNJDK CentOS7卸载 OpenJDK 安装Sun的JDK8 安 ...
- 在UnityUI中绘制线状统计图
##先来个效果图 觉得不好看可以自己调整 ##1.绘制数据点 线状图一般由数据点和连线组成 在绘制连线之前,我们先标出数据点 这里我选择用Image图片来绘制数据点 新建Canvas,添加空物体Gra ...
- [已解决] npm ERR! code EINVALIDPACKAGENAME Invalid package name "": name cannot start with an underscore;
打开 cmd 输入 `npm update -g` 等待更新完成即可