我最近了解到,
. ./.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 关键字,应该像这样使用:source
file
在哪里file
包含有效的 shell 命令。这些 shell 命令将在当前 shell 中执行,就像从命令行键入一样。现在,.
file
做的完全一样。
除此之外,.
仅表示“当前工作目录”,如./xyz
(“xyz
在此目录中”) 或a/b/./c/./d
(与 相同a/b/c/d
)。
除此之外,.
文件名仅具有约定的含义,其中.foobar
表示“隐藏”文件(实际上不是......)或如foobar.pdf
,通过后缀表示文件格式(此处.pdf
)。
这些不同的含义不能互换。