为什么不从bash脚本导出工作

时间:2015-05-12 06:08:38

标签: linux bash shell variables export

为什么在以下情况下不导出变量:

在下面的示例中,我导出PARAM变量并将sleep设置为1000秒,以便在后台运行脚本作为进程。

#!/bin/bash

export PARAM="I AM A REAL VALUE"

sleep 1000

所以我按以下步骤执行脚本:

 /tmp/example.bash &

现在脚本作为一个进程运行(我用ps -ef检查),并且从Linux控制台我要打印$PARAM,如下所示

 echo $PARAM

但没有来自PARAM变量的值。

为什么呢?脚本进程运行时,脚本中的export不会导出值。

1 个答案:

答案 0 :(得分:2)

运行/tmp/example.bash &时,在子shell中设置环境,但这不会影响运行它的父shell。

您需要(a)删除sleep 1000和(b)使用.命令或(在Bash或C shell中)source命令将文件作为一部分读取目前的流程:

sed -i.bak '/sleep/d' /tmp/example.bash  # GNU or BSD sed
. /tmp/example.bash
echo $PARAM