10.2.3 环境变量的功能

简介: 10.2.3 环境变量的功能

用 env 观察环境变量与常见环境变量说明

env 是 environment (环境) 的简写,是列出来所有的环境变量。


HOME 代表使用者的主文件夹。


SHELL 告知我们,目前这个环境使用的 SHELL 是哪支程序? Linux 默认使用 /bin/bash。


HISTSIZE 这个与“历史命令”有关,亦即是, 我们曾经下达过的指令可以被系统记录下来,而记录的“笔数”则是由这个值来设置的。


MAIL 当我们使用 mail 这个指令在收信时,系统会去读取的邮件信箱文件 (mailbox)。


PATH 就是可执行文件搜寻的路径目录与目录中间以冒号(:)分隔, 由于文件的搜寻是依序由 PATH 的变量内的目录来查询,所以,目录的顺序也是重要的。


LANG是语系数据。举例来说,当我们在启动某些 perl 的程序语言文件时,他会主动的去分析语系数据文件, 如果发现有他无法解析的编码语系,可能会产生错误。一般来说,我们中文编码通常是 zh_TW.Big5 或者是zh_TW.UTF-8,这两个编码偏偏不容易被解译出来,所以,有的时候,可能需要修订一下语系数据。


RANDOM是“随机乱数”,目前大多数的 distributions 都会有乱数产生器,那就是 /dev/random 这个文件。 我们可以通过这个乱数文件相关的变量($RANDOM) 来随机取得乱数值。在 BASH 的环境下,这个 RANDOM 变量的内容,介于 0~32767 之间,所以,你只要 echo $RANDOM 时,系统就会主动的随机取出一个介于 0~32767 的数值。


用 set 观察所有变量 (含环境变量与自订变量)


bash 可不只有环境变量,还有一些与 bash 操作接口有关的变量,以及使用者自己定义的变量存在的。

一般来说,不论是否为环境变量,只要跟我们目前这个 shell 的操作接口有关的变量, 通常都会被设置为大写字符,也就是说,“基本上,在 Linux 默认的情况中,使用{大写的字母}来设置的变量一般为系统内定需要的变量”。


PS1:(提示字符的设置)


这是 PS1 (数字的 1 不是英文字母),这个东西就是我们的“命令提示字符”。当我们每次按下 [Enter] 按键去执行某个指令后,最后要再次出现提示字符时, 就会主动去读取这个变量值了。上头 PS1 内显示的是一些特殊符号,这些特殊符号可以显示不同的信息, 每个distributions 的 bash 默认的 PS1 变量内容可能有些许的差异,不要紧,“习惯你自己的习惯”就好了。 你可以用 man bash [3]去查询一下 PS1 的相关说明,以理解下面的一些符号意义。


\d :可显示出“星期 月 日”的日期格式,如:"Mon Feb 2"


\H :完整的主机名称。举例来说,鸟哥的练习机为“study.centos.vbird”


\h :仅取主机名称在第一个小数点之前的名字


\t :显示时间,为 24 小时格式的“HH:MM:SS”


\T :显示时间,为 12 小时格式的“HH:MM:SS”


\A :显示时间,为 24 小时格式的“HH:MM”


\@ :显示时间,为 12 小时格式的“am/pm”样式


\u :目前使用者的帐号名称,如“dmtsai”;


\v :BASH 的版本信息


\w :完整的工作目录名称,由根目录写起的目录名称。但主文件夹会以 ~ 取代;


\W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。


# :下达的第几个指令。


$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $


10.2.4 影响显示结果的语系变量 (locale)


当我们使用 man command 的方式去查询某个数据的说明文档时,该说明文档的内容可能会因为我们使用的语系不同而产生乱码。 另外,利用 ls 查询文件的时间时,也可能会有乱码出现在时间的部分。那个问题其实就是语系的问题。


目前大多数的 Linux distributions 已经都是支持日渐流行的万国码了,也都支持大部分的国家语系。 那么我们的 Linux 到底支持了多少的语系呢?这可以由 locale 这个指令来查询到:

正体中文语系至少支持了两种以上的编码,一种是目前还是很常见的 big5 ,另一种则是越来越热门的 utf-8 编码。 那么我们如何修订这些编码呢?其实可以通过下面这些变量的说:

基本上,你可以逐一设置每个与语系有关的变量数据,但事实上,如果其他的语系变量都未设置, 且你有设置 LANG 或者是 LC_ALL 时,则其他的语系变量就会被这两个变量所取代!这也是为什么我们在 Linux 当中,通常说明仅设置 LANG 或 LC_ALL 这两个变量而已,因为他是最主要的设置变量。


在 Linux 主机的终端机接口环境下是无法显示像中文这么复杂的编码文字, 所以就会产生乱码了。也就是如此,我们才会必须要在 tty1 ~ tty6 的环境下, 加装一些中文化接口的软件,才能够看到中文。


整体的默认语系定义在/etc/locate.conf中:


相关文章
|
4月前
|
Java Linux Shell
配置系统PATH环境变量
配置系统PATH环境变量
|
6月前
|
前端开发 测试技术 API
NuxtJS3配置多环境变量
OK,配置完成~~~~~~
279 4
|
6月前
|
Shell
环境变量
环境变量。
57 1
|
11月前
|
JavaScript
umijs环境变量问题
umijs环境变量问题
186 0
|
存储 搜索推荐
环境变量详解
环境变量详解
103 1
|
Linux iOS开发 MacOS
一日一技:你真的知道如何设置环境变量?
一日一技:你真的知道如何设置环境变量?
152 0
|
编译器 开发者 Python
使用系统环境变量 | 学习笔记
快速学习 使用系统环境变量
141 0
使用系统环境变量 | 学习笔记
|
Shell 开发工具 git
查看系统环境变量
查看系统环境变量
110 0