我想请教一下以下脚本执行方式之间的区别。
. script.sh
../script.sh
. ./script.sh
先感谢您。
答案1
script.sh
./script.sh
../script.sh
以上所有内容都有 shell 要求内核执行给定的文件,该文件不需要是 shell 脚本(无论名称如何)。第一个在 中查找文件PATH
,第二个在当前目录 ( .
) 中查找文件,第三个在父目录中查找。
. script.sh
. ./script.sh
. ../script.sh
source script.sh
source ./script.sh
source ../script.sh
两者都.
要求source
shell 本身打开并读取给定的文件作为 shell 命令,在当前外壳,几乎就像里面的命令只是在 shell 命令行上给出的一样。也就是说,例如,在源脚本中进行的所有变量分配随后都在 shell 中可见,而常规执行则不是这种情况。source
是 的非标准同义词.
。第一个再次在 中查找文件PATH
,第二个在当前目录中查找,第三个在父目录中查找。其他三个也同样。
(除了在 Zsh 中,source
首先查看当前目录,与 Bash 不同.
;在 Bash 中,如果该shopt
设置sourcepath
被禁用,则两者都不会.
或source
搜索PATH
。)
看: