用 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中: