为什么无法从 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
为什么导出变量在以下情况下不起作用:
在下面的示例中,我导出 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