导出无法在我的shell脚本中工作

时间:2012-05-28 08:51:15

标签: linux shell variables terminal

我有两个脚本1.sh和2.sh。

1.sh如下:

#!/bin/sh
variable="thisisit"
export variable

2.sh如下:

#!/bin/sh
echo $variable

根据我读到的内容,这样做(导出)可以从一个shell脚本中访问另一个shell脚本中的变量。但这不适用于我的脚本。有人可以帮忙吗提前谢谢。

2 个答案:

答案 0 :(得分:79)

如果您正在执行sh 1.sh./1.sh等文件,那么您将在子shell中执行它。

如果您希望在当前shell中进行更改,可以执行以下操作:

. 1.sh
# OR
source 1.sh

请考虑浏览reference-documentation

“当使用source [或.]运行脚本时,它在现有shell中运行,脚本完成后,脚本创建或修改的任何变量都将保持可用。如果脚本像filename那样运行,则会生成一个单独的子shell(带有一组完全独立的变量)来运行脚本。“

答案 1 :(得分:6)

export将一个变量放在执行shell的环境中,因此它被传递给脚本执行的进程,但不会传递给调用脚本或任何其他进程的进程。尝试执行

#!/bin/sh
FOO=bar
env | grep '^FOO='

#!/bin/sh
FOO=bar
export FOO
env | grep '^FOO='

查看export的效果。

要从1.sh2.sh获取变量,请从2.sh拨打1.sh,或在1.sh中导入2.sh

#!/bin/sh
. ./1.sh
echo $variable