为什么无法从 bash 脚本导出

Why isn't export working from bash script

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

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

#!/bin/bash

export PARAM="I AM A REAL VALUE"

sleep 1000

所以我按如下流程执行脚本:

 /tmp/example.bash &

现在将 运行s 脚本作为一个进程(我用 ps -ef 检查了它)并且我想从 Linux 控制台打印 $PARAM 如下

 echo $PARAM

但 PARAM 变量没有值。

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

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