为什么不导出以下情况下工作的变量:
在下面的示例中,我导出了参数变量,并将睡眠设置为1000秒,以便在后台运行脚本。
#!/bin/bash
export PARAM="I AM A REAL VALUE"
sleep 1000
因此,我将脚本执行为以下过程:
/tmp/example.bash &
现在脚本作为一个过程运行(我使用ps -ef
检查),并且从Linux控制台进行检查,我想将$PARAM
打印为以下
echo $PARAM
,但没有来自param变量的值。
为什么?脚本流程运行时,脚本中的export
不会导出值。
运行/tmp/example.bash &
时,您将环境设置在子壳中,但这不会影响运行它的父壳。
您需要(a)删除sleep 1000
和(b)使用.
命令或(在bash或a c shell中) source
命令作为当前过程的一部分读取文件:
sed -i.bak '/sleep/d' /tmp/example.bash # GNU or BSD sed
. /tmp/example.bash
echo $PARAM