我想知道以下两种运行bash脚本的方法是否等效?
. ./myScript.sh
source myScript.sh
它们在执行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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句