为什么在以下情况下不导出变量:
在下面的示例中,我导出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
不会导出值。
答案 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