zoukankan      html  css  js  c++  java
  • linux中export的作用

     https://blog.csdn.net/damontive/article/details/50352722

    参考:http://www.cnblogs.com/zhangze/articles/1832542.html
    以前一直觉得export可有可无,虽然知道export是干嘛的,不就是把本地变量变成全局变量么(实际中叫环境变量),但是感觉好像没有这货也没影响,今天看了这篇博文,终于恍然大悟。用自己的语言,思维方式重新整理一遍

    首先说明两个概念:
    父shell与子shell,从shellA中启动一个shell,称之为shellB。 shellA为父shell,shellB为子shell。
    最容易理解的情况就是在一个shell中执行一个gnome-terminal命令(不同桌面环境命令不一样),弹出一个新的shell
    最常见的情况是在当前shell下执行脚本,这个脚本实际上是在子shell中执行的

    概念说完了,感觉啰嗦了, 说实验

    这里用最常见的情况举例:在当前shell下执行脚本

    现在有三个脚本
    exp1.sh

    var="hello,world"
     
    exp2.sh

    var="hello,world"
    export var
     
    test.sh

    echo $var

    实验1:

    source exp1.sh
    echo $var
    bash test.sh
     
    结果:


    实验2:

    source exp2.sh
    echo $var
    bash test.sh
     
    结果:

    可以看到在当前shell下执行echo $var是没有任何问题的,但是执行bash test.sh时,实验1是没有任何输出(找不到var这个变量)实验2 echo出了var的值。因为实验2中exp2.sh加入了export,所以var变成了环境变量,所以var对子shell是可见的,而实验1中由于没有export var,所以var是个局部变量,并不能被子shell看到

    再啰嗦几句, linux中在 profile 或者 bashrc 或者其他类似的文件中设置环境变量时(比如PATH),如果没有export,那么只能在直接启动的shell中起作用,如果在当前shell下运行脚本或者直接启动一个子shell,因为实际上是局部变量。子shell看不见的,所以就gg了
    ————————————————
    版权声明:本文为CSDN博主「胡LiuJia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/damontive/article/details/50352722

  • 相关阅读:
    cocoaPod
    Swift 命名规则
    Swift 数据类型
    Xcode Version 和Bulid 区别
    升级Xcode之后VVDocumenter-Xcode不能用的解决办法
    Mac svn
    RSA 加密
    想做AI测试,需要学习哪些数学知识?
    selenium + firefox驱动版本对应。
    开机自动启动WEB服务,共享目录。
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/13177307.html
Copyright © 2011-2022 走看看