父进程:. a.sh  或者 source  a.sh 子进程:bash a.sh   或者 ./a.sh

直接执行(子进程):在这种方式下,命令行会直接执行脚本文件。您可以通过以下两种方式之一来执行脚本:

bash a.sh:这将在子进程中执行 Bash 脚本。./a.sh:这将在当前目录中执行脚本文件。为了能够执行脚本文件,通常需要在脚本文件的开头添加可执行权限,例如使用命令 chmod +x a.sh。 通过 source 命令执行(父进程):在这种方式下,脚本文件将在当前 shell 会话中执行,而不是启动新的子进程。您可以使用以下命令之一来执行脚本:

source a.sh:这将直接在当前 shell 会话中执行脚本文件。. a.sh:这也是在当前 shell 会话中执行脚本文件的一种简写方式。

这两种方式的主要区别在于脚本的执行环境。直接执行的方式会在子进程中运行脚本,而通过 source 命令执行的方式则在当前 shell 会话中运行脚本。这种区别可能会导致一些环境变量和函数的作用域问题,因此在使用时需要注意。

父进程:通常指的是启动脚本的原始进程。在大多数情况下,当您在命令行中直接运行一个脚本时,该脚本将在父进程中执行。这意味着脚本中的任何命令和操作都是在与启动脚本的进程相同的进程中执行的。

子进程:子进程是父进程的一个分支,它由父进程创建。当您使用 bash a.sh 或 ./a.sh 执行脚本时,脚本实际上是在一个新的子进程中执行的。这意味着脚本中的命令不会影响启动脚本的父进程的环境或状态。子进程和父进程是相互独立的,它们之间的通信和交互可能受到限制。

通过 source 或 . 命令执行脚本时,脚本是在当前的 shell 会话中执行的,而不是在子进程中。这意味着脚本中的命令将在相同的 shell 环境中运行,并能够访问和修改当前 shell 的变量和函数。

总结:执行方式的选择取决于您希望脚本如何与当前的 shell 环境和其他进程交互。如果您希望脚本独立运行,不受父进程的影响,可以使用子进程方式执行。如果您希望脚本在当前 shell 会话中运行,并能够访问和修改环境变量或定义函数等,则可以使用 source 或 . 命令执行脚本。

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: