set、env、export的区别

set:显示当前shell的变量,包括当前用户的用户变量

env:显示用户变量

export:显示当前导出成用户变量的shell变量

举例来说:

[email protected]:~#
aaa=bbb            设置一个变量,此时设置的变量为shell变量

[email protected]:~# echo $aaa          显示刚刚设置的变量

bbb

[email protected]:~# set|grep aaa      显示并搜索当前的shell变量,找到刚刚设置的aaa变量

aaa=bbb

[email protected]:~# env |grep aaa    显示并搜索当前登录用户的变量,因为aaa是shell变量,所以搜索不到

[email protected]:~# export aaa         将aaa这个shell变量导出成用户变量

[email protected]:~# env |grep aaa    这个时候搜索用户变量就可以搜索出aaa

aaa=bbb

[email protected]:~#

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

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

另外,shell(这里指bash)的初始化过程是这样的:

1.bash 检查文件/etc/profile 是否存在

2. 如果存在,bash 就读取该文件,否则,跳过

3.bash 检查主目录下的文件.bash_profile 是否存在。

4. 如果存在,bash 就读取該文件,否则,跳过

5.bash 检查主目录下的.bash_login 是否存在。

6. 如果存在,bash 就读取该文件,否则,跳过

7.bash 检查主目录下的文件.profile 是否存在

8. 如果存在, bash 就读取该文件,否则,跳过。

这些步骤都执行完后,就出现提示符了, ksh 默认提示符是 $.

参考引用

http://www.opsers.org/base/set-env-and-export-the-difference-between-the-three-command.html

http://blog.csdn.net/longxibendi/article/details/6125075

http://www.linuxeden.com/html/sysadmin/20080424/56879.html

时间: 2024-07-30 11:26:32

set、env、export的区别的相关文章

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

shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量 包括的私有变量以及用户变量,不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样 env:显示(设置)用户变量变量 export:显示(设置)当前导出成用户变量的shell变量. 举个例子来讲: [www.linuxidc.com@linuxidc ~]$ aaa=bbb –shell变量设定 [www.linuxidc.com@linuxidc ~]$ e

shell变量/环境变量和set/env/export用法_转

转自:shell环境变量以及set,env,export的区别 一.shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量,包括的私有变量以及用户变量.不同类的shell有不同的私有变量 bash,ksh,csh每中shell私有变量都不一样. env:显示(设置)用户变量变量. export:显示(设置)当前导出成用户变量的shell变量. export 显示当前导出成用户变量的shell变量,并显示变量的属性(是否只读),按变量名称排序: dec

SVN中检出(check out) 跟导出(export) 的区别

SVN中检出(check out) 和导出(export) 的区别?观点一:SVN是常用的一种常见的版本控制软件.SVN中检出(check SVN中检出(check out) 和导出(export) 的区别 ? 观点一: SVN是常用的一种常见的版本控制软件.SVN中检出(check out) 和 导出(export) 的区别主要有如下几条:(1)check out跟check in对应,export跟import对应.(2)check out导出获得文件后,导出的文件仍处于SVN版本控制中,与

docker save与docker export的区别

在http://chy940405.blog.51cto.com/11344281/1981804 这篇文章中分享了docker 基本操作Ⅱ(关于镜像操作),其中有一个问题就是docker save和docker export都能导出镜像包,咋看起来区别似乎不大,如下就来介绍两者的区别,适用于什么场景? - docker save > docker save的应用场景是,如果你的应用是使用docker-compose.yml编排的多个镜像组合,但你要部署的客户服务器并不能连外网.这时,你可以使用

exports与module.exports的区别,export与export.defult区别

在JS模块化编程中,之前使用的是require.js或者sea.js.随着前端工程化工具webpack的推出,使得前端js可以使用CommonJS模块标准或者使用ES6 moduel特性. 在CommonJs模块标准中我们载入模块使用的是require(),输出模块用的是exports或者module.exports 在ES6中载入模块我们用的是import ,输出模块用的是export exports与module.exports的区别 //载入模块 var m = require('./mo

Linux 下 set env export declare浅浅 set和shopt命令详解--(shell定制) (转载)

set 用来显示本地变量 env 用来显示环境变量 export 用来显示和设置环境变量 set 显示当前shell的变量,包括当前用户的变量 env 显示当前用户的变量 export 显示当前导出成用户变量的shell变量 每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比 如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只

node.js中module.export与export的区别。

对module.exports和exports的一些理解 可能是有史以来最简单通俗易懂的有关Module.exports和exports区别的文章了. exports = module.exports = {}; 所以module.exports和exports的区别就是var a={}; var b=a;,a和b的区别 看起来木有什么太大区别,但实际用起来的时候却又有区别,这是为啥呢,请听我细细道来 关于Module.exports和exports有什么区别,网上一搜一大把,但是说的都太复杂了

es6 export 和 export default区别

相信很多人都使用过export.export default.import,然而它们到底有什么区别呢? 在JavaScript ES6中,export与export default均可用于导出常量.函数.文件.模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export.import可以有多个,export default仅有一个. 具体使用: 1.export //demo1.js expo

docker save/load、export/import 区别

区别: save的对象是image,产生的文件需要用load来生成image: export的对象是container,产生的文件需要用import来生成image. save Save one or more images to a tar archive (streamed to STDOUT by default) load Load an image from a tar archive or STDIN export Export a container's filesystem as