+ -
当前位置:首页 → 问答吧 → shell中export的问题

shell中export的问题

时间:2011-04-22

来源:互联网

本帖最后由 whpu000625 于 2011-04-22 13:58 编辑

我有如下三个文件
# cat test.sh
  1. #!/bin/bash

  2. #!/bin/bash
  3. AA=""
  4. export AA

  5. ./test2.sh

  6. echo "======test======="AA=$AA
复制代码
#cat test1.sh
  1. #!/bin/bash
  2. test()
  3. {
  4.    AA="aaaa"
  5. }
复制代码
#cat test2.sh
  1. #!/bin/sh
  2. . ./test1.sh
  3. test
  4. echo "=======test2======" AA=$AA
复制代码
test.sh中定义export出环境变量AA。
test1.sh中定义函数test用于改变AA的值,
test2.sh调用函数test。

在test2.sh中环境变量的值发生了改变,但是为什么在test.sh中看到的值没有改变


#./test.sh
=======test2====== AA=aaaa
======test=======AA=

作者: whpu000625   发布时间: 2011-04-22

shell是顺序执行的
先执行 . ./test2.sh
然后是 AA=""
AA的值永远是空。

作者: ly5066113   发布时间: 2011-04-22

回复 ly5066113


    不好意思,例子有点问题,已经该过来了

作者: whpu000625   发布时间: 2011-04-22

回复 whpu000625


怎么不是 . ./test2.sh 了?
如果不是在当前shell中运行,子shell中变量的改变是不会影响到父shell的。

作者: ly5066113   发布时间: 2011-04-22