我安装的一个软件在我的个人资料中插入了一行,内容如下:
[ -s "$SOME_FILE" ] && \. "$SOME_FILE"
我知道 dot.
是 的同义词source
,所以我怀疑这只是在获取文件,但我以前从未见过\.
;它还有其他作用吗?
编辑,关于 DV:搜索“反斜杠点”会导致有关./
调用可执行文件时的问题,并man source
导致\.
未出现的联机帮助页。我不知道还能尝试什么,因此提出了这个问题。
编辑2:查看相关问题
我安装的一个软件在我的个人资料中插入了一行,内容如下:
[ -s "$SOME_FILE" ] && \. "$SOME_FILE"
我知道 dot.
是 的同义词source
,所以我怀疑这只是在获取文件,但我以前从未见过\.
;它还有其他作用吗?
编辑,关于 DV:搜索“反斜杠点”会导致有关./
调用可执行文件时的问题,并man source
导致\.
未出现的联机帮助页。我不知道还能尝试什么,因此提出了这个问题。
编辑2:查看相关问题
引号外的反斜杠表示“在解析过程中逐字解释下一个字符”。since
.
是解析器的普通字符,\.
以与 相同的方式解析.
,并调用内置函数.
(source
在 bash 中是同义词)。在这种情况下,它可能会有所作为。如果用户已经定义了一个
.
之前在 中调用的别名.profile
,并且.profile
正在扩展别名的 shell 中读取(bash 默认情况下只有在交互调用时才会这样做),那么.
会触发别名,但\.
仍会触发内置函数,因为 shell不会尝试对以任何方式引用的单词进行别名扩展。我怀疑这
.
已更改为\.
因为用户在为.
.请注意,这
\.
将调用一个名为.
. 据推测,编写函数的用户比编写别名的用户知识渊博,并且知道.profile
如果要包含来自第三方的代码,重新定义标准命令是一个坏主意。但是如果你想绕过别名和函数,你可以写command .
. 这个片段的作者没有这样做,或者因为他们关心没有command
内置的古董贝壳,或者更可能是因为他们没有意识到这一点。顺便说一句,在其中定义任何别名
.profile
都是一个坏主意,因为.profile
它是会话初始化脚本,而不是shell初始化脚本。bash 的别名属于.bashrc
.这
\.
是一个“字面点”,即只是一个点。它将被视为标准.
命令(类似于source
inbash
)。POSIX 标准对此有这样的说法(我的重点)
点字符可以有别名:
这意味着这
\.
将避免使用.
命令的别名版本,因为,