在Shell脚本中,有三种不同的方式来执行脚本:sh
、source
和直接使用文件名执行。
-
sh
命令:使用sh
命令后面跟着脚本文件的路径,可以执行Shell脚本。这种方式会创建一个新的子进程来执行脚本,并且会以子进程的环境来执行脚本。例如:sh myscript.sh
这种方式会启动一个新的Shell进程,并在该进程中执行
myscript.sh
脚本。脚本中的任何变量或环境设置都只会在该子进程中存在,不会影响到当前的Shell环境。 -
source
命令(或者.
):使用source
命令(或.
)后面跟着脚本文件的路径,可以在当前Shell环境中执行脚本。这种方式不会启动一个新的子进程,而是直接在当前Shell环境中执行脚本。例如:source myscript.sh # 或者 . myscript.sh
这种方式会将脚本中的内容当作是当前Shell环境的一部分来执行,所以脚本中的变量、函数和环境设置都会影响到当前Shell环境。
-
直接使用文件名执行:将脚本文件赋予可执行权限(例如
chmod +x myscript.sh
),然后可以直接使用脚本文件的路径来执行脚本。例如:./myscript.sh
这种方式也会启动一个新的子进程来执行脚本,但是脚本中的任何变量或环境设置都只会在该子进程中存在,不会影响到当前的Shell环境。
总结:
sh
命令会创建一个新的子进程来执行脚本,脚本中的变量和环境设置只在子进程中有效。source
命令(或.
)在当前Shell环境中直接执行脚本,脚本中的变量和环境设置会影响到当前Shell环境。- 直接使用文件名执行会创建一个新的子进程来执行脚本,脚本中的变量和环境设置只在子进程中有效。
根据需要选择合适的方式来执行脚本,这取决于你希望脚本对当前Shell环境产生的影响以及是否需要获取脚本执行后的结果。