【环境变量的显示】
环境变量类似于高级程序语言中的全局变量,可以在创建他们的 Shell 及其派生出的任意子程序中使用
有些环境变量是用户创建的,而大多数环境变量是专用的,属于系统变量的一部分,使用 env
命令可以打印当前 Shell 环境下所有环境变量及其内容
除了环境变量外,还有一些与 Shell 操作接口有关的变量,以及用户自定义变量,此时可以使用 set
命令来列出当前 Shell 环境下的所有变量及其内容
常见的环境变量说明见下表
环境变量 | 说明 |
---|---|
HOME | 用户的主文件夹 |
SHELL | 目前环境所使用的 Shell |
HISTSIZE | 历史记录所记录的条数 |
PATH | 执行文件查找的路径,目录与目录间用冒号 : 分隔 |
使用 mail 命令在收信时,系统读取的邮件信箱文件 |
|
LANG | 语系数据,中文编码通常是 zh_CN.gb2312 或 zh_CN.UTF-8 |
RANDOM | 随机数变量,可通过该变量获取一个介于 0 到 32767 的随机数值 |
【语系相关的环境变量】
目前,大多数 Linux 都支持各国及地区代码,也支持大部分的语系,使用 locale -a
可以列出当前 Linux 环境所支持的语系代码
而对于系统所支持的语系环境,可以直接使用 locale
来列出与语系相关的环境变量与其内容
这些变量的含义如下表
语系相关的环境变量 | 说明 |
---|---|
LANG | 主语言的环境 |
LC_CTYPE | 字符辨识的编码 |
LC_NUMERIC | 数字系统的显示信息 |
LC_TIME | 时间系统的显示数据 |
LC_COLLATE | 字符串的比较与排序 |
LC_MONETARY | 币值显示格式 |
LC_MESSAGES | 菜单、错误信息等信息显示内容 |
LC_PAPER | 页面显示内容 |
LC_NAME | 姓名书写方式 |
LC_ADDRESS | 地址书写方式 |
LC_TELEPHONE | 电话号码书写方式 |
LC_MEASUREMENT | 度量衡表达方式 |
LC_IDENTIFICATION | 对 locale 自身包含信息的概述 |
LC_ALL | 整体语系的环境 |
对于上述的与语系相关的环境变量,LANG 指定了所有与 locale 有关的变量默认值,但其优先级最低,而 LC_ALL 则指定了整体语系环境,其优先级最高,当设定了 LC_ALL 时,所有的与语系相关的环境变量都将被 LC_ALL 的值所取代,即有:
【进程相关性】
当登录 Linux 并取得一个 Shell 后,此时的 Shell 就是一个独立的进程,接下来在这个 Shell 中执行的任何命令都是由这个 Shell 所衍生出来的,此时这些被执行的命令就被称为子进程
在 Linux 中,当启动 Shell 后,操作系统会分配一个记忆块给 Shell 使用,此内存内的变量可以让子进程使用;当加载另一个 Shell,即启动子进程时,子进程会将父进程的环境变量所在的记忆块导入自己的环境变量中
因此,子进程会继承父进程的环境变量,同时子进程不会继承父进程的自定义变量
这就导致了原本的自定义变量在 Shell 进入子进程后会消失,直到离开子进程回到父进程后,才会出现
换个角度来说,如果能将自定义变量设为环境变量的话,那么就可以让该自定义变量继续存在于子进程中
使用 export 变量名
命令,即可令一个自定义变量变为环境变量,其实质是将自定义变量的内容写入环境变量所在的记忆块中,此外,若单独键入 export
,则会将所有的环境变量显示出来