Answers:
它们在执行bash方面是等效的,因为它们执行的操作完全相同。另一方面,source要长5个字符,并且不能移植到仅POSIX的shell或Bourne中,而.(dot)是可以移植的,所以我从不费心使用source。
没错-获取文件会在当前Shell中运行命令,这会影响您当前的Shell环境。您仍然可以将参数传递给源文件,如果bash $PATH不包含任何斜杠,它实际上将像普通命令一样查找文件名。
与.vs 的原始问题无关source,但在您的示例中,
. ./myScript.sh
与...不同
source myScript.sh
因为while .和source功能相同,myScript.sh并且./myScript.sh不相同。由于./myScript.sh包含斜杠,因此将其解释为路径,而shell仅使用./myScript.sh。但是,myScript.sh由于没有斜杠,因此外壳$PATH程序首先对其进行搜索。这是POSIX指定的标准行为.。尽管大多数shell可能会添加扩展名(例如,在路径搜索之后在当前工作目录中进行搜索)或更改./ 行为的选项,但大多数默认情况下都使用此扩展名source。
/外壳,并且针对bash并且zsh取决于是否启用POSIX模式。还要注意,在许多ksh实现中,.其行为与有所不同source。