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

为什么不导出在以下情况下工作的variables:

在以下示例中,我导出PARAMvariables,并将睡眠设置为1000秒,以便在后台运行脚本作为进程。

#!/bin/bash export PARAM="I AM A REAL VALUE" sleep 1000 

所以我执行脚本作为过程如下:

  /tmp/example.bash & 

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

  echo $PARAM 

但是PARAMvariables没有值。

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

当你运行/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