set,env和export这三个命令的区别

时间:2021-10-09 23:06:30


原文地址:http://www.opsers.org/linux-home/base/set-env-and-export-the-difference-between-the-three-command.html

 

今天在学习用户切换的时候,用到到这些变量,就深入学习了一下,下面是在网上GOOGLE到的资料,保留下来,供自己再次学习!
set,env和export这三个命令都可以用来显示shell变量,区别
[root@localhost root]# aaa=bbb
[root@localhost root]# echo $aaa
bbb
[root@localhost root]# set |grep aaa
aaa=bbb
[root@localhost root]# env |grep aaa
[root@localhost root]# export aaa
[root@localhost root]# env |grep aaa
aaa=bbb

set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量
每个shell都有自己特有的变量,这和用户变量是不同的。当前用户变量和你用什么shell无关,不管你用什么shell都是存在的。比如HOME,SHELL等这些变量,但shell自己的变量,不同的shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的。export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。

注:它上面说的用户变量,就是指环境变量(相当于全局变量),shell自己的变量指的是自定义变量(相当于局部变量)