set,env,和export的区别
每个shell都有自己特有的变量,这和用户变量是不同的。当前用户变量和你用什么shell无关,不管你用什么shell都是存在的。比如HOME,SHELL等这些变量,但shell自己的变量,不同的shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的。export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
使用export设置环境变量为导出,针对整个系统
使用env设置环境变量只设置一次
使用set设置环境变量等同于直接设置,如FOO=test
举个例子来讲:
- [www.linuxidc.com@linuxidc ~]$ aaa=bbb --shell变量设定
- [www.linuxidc.com@linuxidc ~]$ echo $aaa
- bbb
- [www.linuxidc.com@linuxidc ~]$ env| grep aaa --设置完当前用户变量并没有
- [www.linuxidc.com@linuxidc ~]$ set| grep aaa --shell变量有
- aaa=bbb
- [www.linuxidc.com@linuxidc ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有
- [www.linuxidc.com@linuxidc ~]$ export aaa --那么用export 导出一下
- [www.linuxidc.com@linuxidc ~]$ env| grep aaa --发现用户变量内存在了
- aaa=bbb
总结:linux 分 shell变量(set),用户变量(env), shell变量包含用户变量,export是一种命令工具,是显示那些通过export命令把shell变量中包含的用户变量导入给用户变量的那些变量。

浙公网安备 33010602011771号