shell 中的export作用(转载)

本文探讨了BASH shell中使用export和source命令时变量的行为差异。通过具体实例解释了为何export仅能在当前shell环境中生效,而source能将变量作用域扩展到当前shell。这对理解和运用shell脚本中的变量管理至关重要。

接触BASHexport是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后echo显示出它的值,可结果却不是这样,脚本执行完后用source+脚本文件就可以了,我试了一下果然可以,但一个新的问题又出来了。我将脚本中source一样可以。那这个

在经过多次尝试后发现了一些东西,是我自己猜的,如果有什么不对的地方,请指正,谢谢。shell环境(不知道执行其它程序是不是这样),然后将父shell中执行。(也就是说父shell中可以调用,但反过来就不行,如果在子shell或者它的子shell结束时,也可以理解为脚本执行完时,变量消失。)为了证明这一点,请看脚本内容:

test='value'

export test

这样的脚本执行完后,

shell,该shell的子test这个变量的,因为现在是处于它的子exit退出子test变量消失。source对脚本进行执行时,如果不加shell中看到这个变量,因为它还不是一个系统环境变量呀,如脚本内容是:source执行后,在bash开一个子test是不会被复制到子shell中运行,所以我再建另一个脚本文件执行时,是不会输入任何东西的,内容如:echo $test输出变量值,为什么把它放进脚本文件就不行了呢?1、执行脚本时是在一个子shell自动退出。shell中的系统环境变量才会被复制到子export定义的变量);shell中的系统环境变量只对该shell有效,该shell中)。export定义的变量只对该shell也是无效的。source执行不一行呢?这也是我自己碰到的一个问题。Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename.明白了为什么不一样了吧?直接执行一个脚本文件是在一个子source则是在当前 困扰了我几天的问题终于可以圆满的解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值