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
。