如果我将脚本作为后台进程获取,会发生什么?

时间:2014-08-27 09:04:46

标签: bash shell background subshell

从BASH页面:

  

使用源运行脚本时,它在现有shell中运行,   脚本创建或修改的任何变量都将保持可用   脚本完成后。相反,如果脚本运行就像   文件名,然后是一个单独的子shell(具有完全独立的一组)   将产生变量)来运行脚本。

但是如果我跑

会发生什么
. myscript &

在这种情况下,它是作为子shell运行的吗? . myscript &./myscript &之间的区别是什么?

1 个答案:

答案 0 :(得分:3)

是的 - 你可以轻松测试一下:

源文件:

echo "Source File"
echo "Source PID - $BASHPID"
MYVAR=someval

执行文件:

. source 

echo "Exec PID -$BASHPID"
echo $MYVAR
echo done

输出:

Source File
Source PID - 34893
Exec PID - 34893
someval
done

如果您在执行文件的&中使用. source,则执行顺序不同,与该过程关联的PID也是如此,您可以看到MYVAR源文件中的变量集不会打印:

Exec PID - 34931

done
Source File
Source PID - 34932
相关问题