Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在路径上“源”文件并使其完成?_Bash_Shell - Fatal编程技术网

Bash 如何在路径上“源”文件并使其完成?

Bash 如何在路径上“源”文件并使其完成?,bash,shell,Bash,Shell,我有一个shell脚本,我想用它运行source,它在我的路径上,所以如果我开始键入名称并点击tab,它会自动完成 foo.sh 但是如果我尝试这个 source foo (then hit the tab button) 它不会自动完成。它正在搜索我的工作目录,但没有搜索我的路径。是否有任何方法可以让它找到我路径中的文件 我有bash版本3.2.57(1)-release您可以使用bash内置命令“complete,compgen,compopt”来定制“source”的完成 链接-->

我有一个shell脚本,我想用它运行
source
,它在我的路径上,所以如果我开始键入名称并点击tab,它会自动完成

foo.sh
但是如果我尝试这个

source  foo (then hit the tab button)
它不会自动完成。它正在搜索我的工作目录,但没有搜索我的路径。是否有任何方法可以让它找到我路径中的文件


我有bash版本
3.2.57(1)-release

您可以使用bash内置命令“complete,compgen,compopt”来定制“source”的完成


链接-->

您可以将其放入bashrc中:

complete -c source

-c
代表将在路径中有效搜索的命令名。但这要求文件是可执行的。您可以详细说明这一点,并编写一个自定义完成函数,该函数使用
find
检索PATH中的所有shell脚本。

“如果文件名不包含斜杠,则使用PATH中的文件名查找包含文件名的目录。”另请参见
shopt
选项
sourcepath