什么`. /路径/命令`做什么?(点后空格,绝对路径)

dot*_*hen 7 bash

本 Bash 完成指南中我们了解到,为了让 Bash 执行自动完成,必须执行. /etc/etc/bash_completion.d/foobar注意后面的空格.)才能使 Bash 完成工作。

$ /etc/bash_completion.d/ssh
bash: /etc/bash_completion.d/ssh: Permission denied
$ . /etc/bash_completion.d/ssh
$ ls -l /etc/bash_completion.d | grep ssh
-rw-r--r-- 1 root root   297 Jan 28 18:04 ssh
Run Code Online (Sandbox Code Playgroud)

是命令.的快捷方式source吗?如果不是,那是什么?这是不可能的谷歌,man source回报什么,apropos sourceinfo source给这么多不相关的信息,我不能告诉我们,如果有什么我要找的是在那里。我什至如何开始 RTFM 自己找到这个问题的答案?

HBr*_*ijn 14

Yes.source功能相同。

与往常一样,第一个参考是man bash手册页,您可以在其中通过搜索来确认您的初始猜测/ source

...使用.或源执行的shell 函数或脚本...

是第一个参考,但更进一步你会发现一个部分Shell 内置命令

. filename [arguments]
source filename [arguments]
在当前 shell 环境中从 filename 读取并执行命令,并返回从 filename 执行的最后一个命令的退出状态。如果 filename 不包含斜杠,则使用 PATH 中的文件名来查找包含 filename 的目录。在 PATH 中搜索的文件不需要是可执行的。当 bash 不在 posix 模式时,如果在 PATH 中没有找到文件,则搜索当前目录。如果关闭 shopt 内置命令的 sourcepath 选项,则不会搜索 PATH。如果提供了任何参数,它们将在执行 filename 时成为位置参数。否则位置参数不变。返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为 0),如果找不到文件名或无法读取文件名,则为 false。

事实上,它是一个 bash 内置函数,这是 source 没有自带手册页的原因,这就是 apropos 失败的原因。