什么是`。/ path / command`可以吗?(点后的空格,绝对路径)


7

本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

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


阅读bash手册页,因为它是内置命令,搜索源代码的说明,很难错过。
Anthon

3
.源命令的快捷方式是吗?” —实际上是相反的方法:.是命令,并且source是兼容性别名(与兼容csh)。请注意source,仅在标准POSIX bourne shell中不存在.
Celada'2


通常,当它简单时,它仍然隐藏着……它可以像写“ help ” 一样简单:在下面看一看 ;)
Hastur

Answers:


14

.source功能相同。

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

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

是第一个参考,但更进一步,您可以找到“ Shell Builtin Commands”一节

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

事实上,它是一个bash内置函数,是源代码不带有其自身手册页的原因,这就是apropos失败的原因。


谢谢,我从未想过要执行man bash,但是我会将其添加到“发布前尝试”技术中。该页面看起来将需要我几个月的时间来全面审查和理解,我很开心!
dotancohen'2

与往常一样,第一个参考是man bash?我确定ssh命令是否有问题,对我没有太大帮助。它更是最后的参考。
Anthon

如果您正在编写bash脚本并研究自动完成功能,那么肯定会的。但这可能是经验的声音。
HBruijn'2

dot命令位于Bourne shell中,并且在POSIX shell中已标准化。源命令是C外壳中的类似命令,并已添加到Bash中(并且未由POSIX标准化)。
乔纳森·莱夫勒

对于bash内置函数help,您可以使用,如help sourcehelp .
CarlosCampderrós2015年

4

简要回答:

  1. . absolute_path/mycommand 脚本文件mycommand是目录absolute_path/。有关更多参考,请阅读此处
  2. 是的, .并且source是等效的。
  3. 当需要时,问helpbash shell自己。您将获得内置命令的答案。

有些话更
往往是最简单的方法是最难以捉摸太:我们不认为我们可以问help外壳本身,当命令被内部定义。
使用type .type source我们可以注意到,它们是内置命令。

Hastur@Cthulhu:~> type . source  
. is a shell builtin  
source is a shell builtin

知道了这一点之后,help我们便可以获得有关它们的一些快速信息。
命令help提示符从没有参数给大家:

GNU bash,版本4.1.2(1)...
这些shell命令在内部定义
键入help以查看此列表。键入help name以查找有关函数名称的更多信息。
使用info bash更多的了解一般的外壳。
使用man -k' or信息”以查找有关不在此列表中的命令的更多信息。

同时用help .,以及help source你获得相同的相同帮助:

source: source filename [arguments]
Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

“显而易见的是,除非有人简单地表达它,否则它是看不到的。” 吉布兰


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.