用于执行shell脚本的3个命令之间的区别?

用于执行shell脚本的3个命令之间的区别?

可能的重复:
执行 shell 脚本的不同方式

下面列出的命令之间有哪些具体区别?

./<scriptname>
. <scriptname>
bash <scriptname>

谁能用简单的话解释一下这些差异?

答案1

./<scriptname>在子进程中执行<scriptname>并等待其退出。

. <scriptname><scriptname>在同一进程中执行;使用它的原因通常是允许<scriptname>修改环境,并执行额外的操作,而无需产生新进程的资源成本。

bash <scriptname>告诉 bash 运行<scriptname>。如果<scriptname>有一个 shebang 的顶部有 bash() 的路径#!/bin/bash,那么它的效果与只执行<scriptname>.如果<scriptname>指向另一个解释器 ( #!/bin/sh),则<scriptname>通常会由该程序解释,但您通过要求 bash 解释它来覆盖它。

相关内容