Shell : set 命令的用法

12,903 阅读1分钟

我们在使用操作系统的时候,会了解到系统中的set命令的主要作用或者说是大部分作用就是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号+-的作用分别是关闭和打开指定的模式。set命令不能够定义新的shell变量,如果要定义新的变量,可以使用 declare命令以变量名=值的格式进行定义即可。

命令选项

定义变量

使用declare命令定义一个新的环境变量tools

# 定义新环境变量
$ declare tools='VScode'

再使用set命令将新定义的变量输出为环境变量。

# 设置为环境变量
$ set -a tools

执行该命令后,将会新添加对应的环境变量。用户可以使用env命令和grep命令分别显示和搜索环境变量 tools

# 显示环境变量值
$ env | grep tools

此时,该命令执行后,将输出查询到的环境变量值。

使用 set/env/export 的区别

[escape@localhost ~]$ name="EscapeWen"
[escape@localhost ~]$ echo $name
EscapeWen

# 设置完当前用户变量并没有对应的值
[escape@localhost ~]$ env | grep name

# 设置完成后shell变量有对应的值
[escape@localhost ~]$ set | grep name
EscapeWen

# 对应的值,使用export也没导出
[escape@localhost ~]$ export| grep name

# 使用expor导出一下,在用户变量就可以找到了
[escape@localhost ~]$ export aaa
[escape@localhost ~]$ env | grep aaa
EscapeWen

使用注意事项

可以使用unset命令来清除环境变量,注意set、env、export设置的变量,都可以用unset来清除的。

# 删除环境变量TEST
[escape@localhost ~]$ export TEST="Test"
[escape@localhost ~]$ unset $TEST

使用readonly命令,设置只读变量。

# 将环境变量TEST设为只读
[escape@localhost ~]$ export TEST="Test"
[escape@localhost ~]$ readonly TEST