环境变量 env/export/set/unset
环境变量
环境变量 是 shell 用来存储有关 shell 会话和工作环境的信息(这也是它们被称作环境变量的原因),比如系统的名称、登录到系统上的用户名、用户的系统 ID (也称为 UID )、用户的默认主目录以及 shell 查找程序的搜索路径。这项特性允许你在内存中存储数据,以便程序或 shell 中运行的脚本能够轻松访问到它们。
在 bash shell 中,环境变量分为两类:
全局变量
局部变量
env 命令
env
命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。
命令用法
其中:
[NAME=VALUE]
:变量定义 —— 定义在新的环境中变量,定义多个变量定义用空格隔开。[COMMAND [ARG]...]
:指定要执行的命令和参数。
常用可选参数
参数
说明
-i, --ignore-environment
新开始一个空的环境变量列表
-u, --unset=NAME
从当前环境变量环境移除 NAME
键
export 命令
export
命令用于将 shell 变量输出为环境变量,或者将 shell 函数输出为环境变量。
命令用法
其中:
[name[=value] ...]
指定要输出或删除的环境变量
常用可选参数
参数
说明
-f
以函数名称作为变量名称
-n
删除指定的变量。实际上并未删除,只是不会输出到后续指令的执行环境中
-p
列出所有经过 export
得到的变量以及函数
set 命令
set
命令作用主要是显示系统中已经存在的shell变量,以及设置 shell 变量的新变量值。
使用 set
更改 shell 特性时,符号 "+" 和 "-" 的作用分别是打开和关闭指定的模式。
set
命令不能够定义新的 shell 变量。如果要定义新的变量,可以使用declare
命令以变量名=值
的格式进行定义即可。
命令用法
常用可选参数
参数
说明
-a
标记那些被修改过的或是通过 export
得到的变量
-b
(修改变量时)马上通知作业终止
-e
如果一个命令的退出状态不为 0,马上退出
-f
取消使用通配符
-h
自动记录函数的所在位置
-k
命令所给的参数都会被视为此命令的环境变量
-m
启动作业监视模式
-n
读取命令但不实际执行
-t
执行完随后的指令,即退出 shell
-u
当执行时使用到未定义过的变量,则显示错误信息
-v
显示 shell 所读取的输入值
-x
执行指令后,会先显示该指令及所下的参数
使用实例
unset 命令
unset
命令用于删除已定义的 shell 变量(包括环境变量)和 shell 函数。
在
unset
命令中引用环境变量时,记住不要使用$
命令用法
注意, 1. 如果不指定 -f
或 -v
,默认是会当成先处理 shell 变量,如果失败就会处理 shell 函数。 2. unset
命令不能够删除具有只读属性的 shell 变量和环境变量。
常用可选参数
参数
说明
-f
仅删除函数
-v
仅删除变量
使用实例
使用 $
的时机
$
的时机在涉及环境变量名时,什么时候该使用 $
,什么时候不该使用 $
,实在让人摸不着头脑。 记住一点就行了:如果要用到变量,使用 $
;如果要操作变量,不使用 $
。 这条规则的一个例外就是使用 printenv
显示某个变量的值。
Last updated