|
接触BASH的export是将自定义变量变成系统环境变量):我在一个脚本文件中定义一个了变量,然后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则是在当前 困扰了我几天的问题终于可以圆满的解决了
本文探讨了BASH shell中使用export和source命令时变量的行为差异。通过具体实例解释了为何export仅能在当前shell环境中生效,而source能将变量作用域扩展到当前shell。这对理解和运用shell脚本中的变量管理至关重要。
1211

被折叠的 条评论
为什么被折叠?



