环境变量
环境变量是以键值对的形式实现的,是在整个系统范围内都可用的变量,并由所有派生的子进程和 Shell 继承。而环境变量的名称是区分大小写的,且通常以大写的形式命名 ( MYVAR1, MYVAR2… )
单个值的环境变量看起来是这样的:
- KEY=value1
如果你想要将多个值赋予环境变量,则通常用冒号 ( : ) 作为分隔符。每一对键值对最终看起来是这样子的:
- KEY=value1:value2:value3
如果要赋予环境变量的值包含空格,则需要使用引号:
- KEY="value with spaces"
Shell变量
Shell 变量是专门用于设置或定义它们的 Shell 中的变量。每个 Shell ,例如 zsh 和 bash ,都有一组自己内部的 Shell 变量。它们通常用于跟踪临时数据,比如当前工作目录,而用法则与环境变量相同。
如果你想让 Shell 变量作为全局变量使用,可以使用 export 指令:
- $ export MYVAR=lxlinux.net
- $ echo $MYVAR
- lxlinux.net
- $ env | grep MYVAR
- MYVAR=lxlinux.net
常见的环境变量与 Shell 变量
一些环境变量和 Shell 变量是非常有用的,并且经常会被引用。以下是一些常见的,你以后可能会遇到的环境变量:
变量名 | 含义 |
---|---|
TERM | 这指定运行 Shell 时要模拟的终端类型。可以针对不同的操作需求模拟不同的硬件终端。不过,你通常不需要管这个变量。 |
USER | 当前登录的用户 |
PWD | 当前的工作目录 |
OLDPWD |
上一个工作目录,这个变量由 Shell 保存,以便通过执行 cd - 切换回上一个工作目录。 |
LS_COLORS |
这定义了 ls 指令的颜色输出代码,用于向 ls 指令添加颜色输出。这通常用于区分不同的文件类型并使用户对文件类型等信息一目了然。 |
当前用户邮箱的路径 | |
PATH | 系统在查找指令时会检查的目录列表。当用户输入一个指令时,系统将按此目录列表的顺序检查目录,以寻找相应的可执行文件。 |
LANG | 当前的语言和本地化设置,包括字符编码。 |
HOME | 当前用户的主目录 |
_ | 上一个被执行的指令 |
除了以上这些环境变量,你也可能会经常遇到以下这些 Shell 变量:
变量名 | 含义 |
---|---|
BASHOPTS | 执行 bash 时所启用的选项列表,这对于确定 Shell 环境是否按照预期的方式运行很有帮助。 |
BASH_VERSION | 人类可读格式的正在执行的 bash 版本 |
BASH_VERSINFO | 机器可读格式的正在执行的 bash 版本 |
COLUMNS | 用于设置绘制到屏幕上的输出信息的宽的列数 |
DIRSTACK |
pushd 和 popd 命令可用的目录堆栈。 |
HISTFILESIZE |
存储到文件中的命令历史记录的行数。默认为 ~/.bash_history 文件的行数。 |
HISTSIZE |
内存中允许存储的命令历史记录的行数,即 histroy 命令所能打印出来的行数。 |
HOSTNAME | 计算机的主机名 |
IFS | 内部字段分隔符,用于分隔命令行上的输入。默认以空格作为分隔符。 |
PS1 | 定义主命令提示符。这用于定义启动 Shell 会话时命令提示符的外观。而 PS2 用于声明跨越多行的命令的命令提示符。 |
SHELLOPTS |
可以用 set 命令设置的 Shell 选项。 |
UID | 当前用户的 UID (用户 ID) |
查看 Shell 变量与环境变量
在 Linux 系统中,有以下几种命令可以让你查看环境变量:
env — 该命令可以让你在自定义的环境中运行程序,并且不需要改变当前的环境。当不带参数使用 env 命令时,它会打印出当前的环境变量列表。
printenv — 可以打印出所有的或者指定的环境变量。
set — 该命令可以设置或者删除 Shell 变量。当不带参数使用 set 命令时,它将打印出包括环境变量与 Shell 变量在内的所有变量以及 Shell 函数的列表。