为什么不导出在以下情况下工作的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