简要说一下env,set,export的区别:env命令显示环境变量,set和export显示环境变量和自定变量.

export:可以讲自定变量转化为环境变量之前有一个疑惑,我们定义环境变量PATH时习惯性的前面加一个export ,但是后来我测试不加export直接定义环境变量也会在export里面存在,经过查看资料研究才发现,系统的环境变量具有继承性,设置环境变量时不加export也会继承下去,但是自定变量就不一样了.必须前面加上export(或者declare -x  变量名)才具有继承性.具体原因如下:当你登入 Linux 并取得一个 bash 之后,你的 bash 就是一个独立的程序,这个程序的识别使用的是一个称为程序识别码,被称为 PID . 接下来你在这个 bash 底下所下达的任何指令都是由这个 bash 所衍生出来的,那些被下达的指令就被称为子程序了。 我们在原本的 bash 底下执行另一个 bash ,结果操作的环境介面会跑到第二个 bash 去(就是子程序), 那原本的 bash 就会在暂停的情况 (睡著了,就是 sleep)。若要回到原本的 bash 去, 就只有将第二个 bash 结束掉 (下达 exit 或 logout) 才行。
这个程序概念与变数有啥关系啊?关系可大了!因为子程序仅会继承父程序的环境变数, 子程序不会继承父程序的自订变数啦!所以你在原本 bash 的自订变数在进入了子程序后就会消失不见, 一直到你离开子程序并回到原本的父程序后,这个变数才会又出现!
换个角度来想,也就是说,如果我能将自订变数变成环境变数的话,那不就可以让该变数值继续存在于子程序了? 呵呵!没错!此时,那个 export 指令就很有用啦!那么如何将环境变量转化为自定变量呢declare +x  变量名即可 (其实export +变量 =declare -x 变量名)
具体例子如下 :自定变量 [root@qike ~]# a=b
[root@qike ~]# echo $a
b[root@qike ~]# export |grep  'a="b"'
[root@qike ~]# echo $?
1
[root@qike ~]# bash
[root@qike ~]# echo $a

[root@qike ~]# exit
exit
[root@qike ~]# export a=b[root@qike ~]# export |grep  'a="b"'
declare -x a="b"
[root@qike ~]# bash
[root@qike ~]# echo $a
b
----------------------------环境变量(考虑到实验公正性,须先将之前在/etc/profile等其他文件设置的变量注释掉)[root@qike ~]# PATH=$PATH:/home/work/mysql/bin/
[root@qike ~]# bash
[root@qike ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11495
Server version: 5.1.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye
[root@qike ~]# exit
exit[root@qike profile.d]# export |grep PATH
declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home/work/mysql/bin:/home/work/mysql/bin"
可以看到新增环境变量不用加export也可以  因为它本身就存在于export中,经过测试将declare + PATH 之后(前提是没有在/etc/profile和/etc/profile.d里面定义)将不会再具有继承性,退出终端重新登录后PATH自动恢复到环境变量的定义中无需再次更改回来.[root@qike ~]# PATH=$PATH:/home/work/mysql/bin/
[root@qike ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11492
Server version: 5.1.40-log MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye
[root@qike ~]# bash
[root@qike ~]# mysql
bash: mysql: command not found
[root@qike ~]#

浅谈export 以及环境变量的更多相关文章

  1. 浅谈Java语言环境搭建-JDK8

    title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...

  2. linux命令 - export - 设置环境变量

    linux命令 - export - 设置环境变量 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供 ...

  3. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  4. 浅谈在ES5环境下实现const

    最近看到一个面试题--用ES5实现const.作为JS初学者的笔者知道在ES6中有const命令,可以用来声明常量,一旦声明,常量的值就不可改变.例如: 1234567891011 const Pi ...

  5. export 解决环境变量的问题!!!!

    export PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin" 如果/et ...

  6. readonly&&declare&&unset &&export&&env环境变量

    readonly命令用于定义只读shell变量和shell函数.readonly命令的选项-p可以输出显示系统中所有定义的只读变量. 选项 -f:定义只读函数: -a:定义只读数组变量: -p:显示系 ...

  7. Linux中export导入环境变量的几种方式

    1.首先类似于windows中的设定系统环境变量的方式为,在/etc/profile中 export PATH=$PATH:....:... 注意间隔符为: 然后复用原来路径是$PATH的方式 2.用 ...

  8. 浅谈JavaScript中的变量、参数、作用域和作用域链

    基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...

  9. 浅谈JS执行环境及作用域

     今天刚刚开通博客,也是第一次写博文,略感紧张.作为一个表达能力弱弱的人来说,自己花三分钟理解一个知识点,当别人问起时,也许需要30分钟才只是让别人知道自己在说什么,一点也不夸张,希望在博客上可以练习 ...

随机推荐

  1. DIV嵌套垂直居中

    第一记住一点:父级相对定位,子级绝对定位 下面演示CSS样式: .父级DIV{ margin:0px auto; position:relative; border:2px solid #ff0000 ...

  2. 在Eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误

    在eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误 原因:Tomcat被删除或者是重新安装,并且安装目录改变了. ...

  3. HDU 1028(母函数)

    Online Judge Online Exercise Online Teaching Online Contests Exercise Author F.A.QHand In HandOnline ...

  4. [moka同学笔记]yii2.0小物件的简单使用(第二种方法)

    1.在widgets/TestWidget.php中 <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/08/05 * T ...

  5. 自制html5塔防游戏

    这是一款由html5里的canvas和普通html元素结合的小游戏,游戏比较简单单一.主要是以建塔,防御为主.下面是游戏的一张截图: 这里是游戏的地址,直接去玩下吧:http://www.lovewe ...

  6. 说反话(c++实现)

    描述:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有 ...

  7. 【使用 DOM】使用事件

    1. 使用简单事件处理器 可以用几种不同的方式处理事件.最直接的方式是用事件属性创建一个简单事件处理器(simple event handler).元素为它们支持的每一种事件都定义了一个事件属性.举个 ...

  8. SAP SD 需求类别确定

    分别按如下优先级确定 1.先从物料主数据中取MRP组对应的策略组. 在物料的MRP1视图中可以得到MRP组, 通过OPPR事务,查找策略组 根据策略组找到对应的策略 img-->生产---> ...

  9. Python: 解决pip安装源被墙的问题

    pip install <package> -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.c ...

  10. 【读书笔记】iOS-使用应用内支付注意事项

    一,iOS端开发. 如果购买成功,我们需要将凭证发送到服务器上进行验证.考虑到网络异常情况,iOS端的发送凭证操作应该可以持久化,如果程序退出,崩溃或网络异常,可以恢复重试. 二,服务器端开发. 服务 ...