Pit*_*kos 4 bash shell background subshell
从 BASH 页面:
当使用 source 运行脚本时,它在现有 shell 中运行,脚本创建或修改的任何变量在脚本完成后仍然可用。相反,如果脚本仅作为文件名运行,则将生成一个单独的子 shell(具有一组完全独立的变量)来运行该脚本。
但如果我跑步会发生什么
. myscript &
Run Code Online (Sandbox Code Playgroud)
在这种情况下它作为子 shell 运行吗?. myscript &和 和有什么区别./myscript &?
是的 - 您可以轻松测试这一点:
源文件:
echo "Source File"
echo "Source PID - $BASHPID"
MYVAR=someval
Run Code Online (Sandbox Code Playgroud)
执行文件:
. source
echo "Exec PID -$BASHPID"
echo $MYVAR
echo done
Run Code Online (Sandbox Code Playgroud)
输出:
Source File
Source PID - 34893
Exec PID - 34893
someval
done
Run Code Online (Sandbox Code Playgroud)
如果使用执行文件&中的. source,则执行顺序不同,与进程关联的 PID 也不同,并且您可以看到MYVAR源文件中设置的变量没有打印:
Exec PID - 34931
done
Source File
Source PID - 34932
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2348 次 |
| 最近记录: |