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

举个例子来讲:

  1. [www.linuxidc.com@linuxidc ~]$ aaa=bbb --shell变量设定     
  2. [www.linuxidc.com@linuxidc ~]$ echo $aaa      
  3. bbb     
  4. [www.linuxidc.com@linuxidc ~]$ env| grep aaa --设置完当前用户变量并没有     
  5. [www.linuxidc.com@linuxidc ~]$ set| grep aaa  --shell变量有     
  6. aaa=bbb     
  7. [www.linuxidc.com@linuxidc ~]$ export| grep aaa --这个指的export也没导出,导出变量也没有     
  8. [www.linuxidc.com@linuxidc ~]$ export aaa   --那么用export 导出一下     
  9. [www.linuxidc.com@linuxidc ~]$ env| grep aaa  --发现用户变量内存在了     
  10. aaa=bbb  

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

posted @ 2013-04-12 19:18  uriboyka  阅读(436)  评论(0)    收藏  举报