来源对比为什么行为不同?

来源对比为什么行为不同?

我最近了解到,

. ./.a.a并且./.a.a是一样的。

但是尝试source source .a.a会出现错误。 IMO,.作为 Bash 别名source不应该有不同的行为,那么我错过了什么?

奖金,为什么. .可以,而source source不行?

答案1

你不能.随处替换source;如果

. ./.a.a

有效,你可以替换第一个.(至少在 Bash 中):

source ./.a.a

第二个.代表当前目录,您不能将其替换为source(尤其是不能./source您所做的那样)。

source source

source如果您在当前目录中调用了一个文件,其中包含对当前 shell 有意义的内容,那就没问题了。我看不出怎么. .会好……

另外,第二种形式. ./.a.a./.a.a不同,它.a.a在单独的 shell 中运行。看采购(“.”或“源”)和在 bash 中执行文件有什么区别?了解详情。

答案2

source是一个 shell 关键字,应该像这样使用:sourcefile在哪里file包含有效的 shell 命令。这些 shell 命令将在当前 shell 中执行,就像从命令行键入一样。现在,.file做的完全一样。

除此之外,.仅表示“当前工作目录”,如./xyz(“xyz在此目录中”) 或a/b/./c/./d(与 相同a/b/c/d)。

除此之外,.文件名仅具有约定的含义,其中.foobar表示“隐藏”文件(实际上不是......)或如foobar.pdf,通过后缀表示文件格式(此处.pdf)。

这些不同的含义不能互换。

相关内容