可能的重复:
执行 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 解释它来覆盖它。