shell环境变量以及set,env,export的区别

一.shell环境变量的分类以及set env export的区别:

set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样
env:显示(设置)用户变量变量
export:显示(设置)当前导出成用户变量的shell变量。
举个例子来讲:

$ aaa=bbb --shell变量设定
$ echo $aaa
bbb
$ env| grep aaa --设置完当前用户变量并没有
$ set| grep aaa  --shell变量有
aaa=bbb
$ export| grep aaa --这个指的export也没导出,导出变量也没有
$ export aaa   --那么用export 导出一下
$ env| grep aaa  --发现用户变量内存在了
aaa=bbb

总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量.

二:使用unset命令来清除环境变量

清除环境变量的值用unset命令。如果未指定值,则该变量值将被 设为NULL。注意set 、env 、export设置的变量,都可以用unset来清除的。
示例如下:

$ export TEST="Test..." #增加一个环境变量TEST   
$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 
TEST=Test...    
$ unset $TEST #删除环境变量TEST    
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经不存在了

三:使用readonly命令设置只读变量

使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:

$ export TEST="Test..." #增加一个环境变量TEST   
$ readonly TEST #将环境变量TEST设为只读   
$ unset TEST #会发现此变量不能被删除     
-bash: unset: TEST: cannot unset: readonly variable    
$ TEST="New" #会发现此也变量不能被修改

 

 

 

 

原文地址:https://www.cnblogs.com/bigcat814/p/2754989.html