bash/readline 不会自动完成目录名称

bash/readline 不会自动完成目录名称

我在当前目录的子目录中有一个可执行文件:

~ $ ls -l src/users
-rwxr-xr-x 1 me users 1001K Nov 17 18:52 src/users*

我尝试通过键入sr并单击 tab 来执行它。恰巧有两种补全可能性(一个在我的主目录中,一个在 /usr/bin/ 中的可执行文件),所以我希望 bash 向我显示它们:

~ $ sr
src/ srptool

相反,它完成可执行文件的名称srptool(忽略包含我的可执行文件的目录)。

我用另一个目录名进行了测试,发现当唯一可能的补全是目录名时,bash 会按预期完成它。

我在 Mac 上的 bash 3.2.53 和 Linux 上的 bash 4.3.39 中遇到了同样的行为。

我记得以前这个是可以的。我不确定这是 bash 还是 readline 的问题。有什么想法吗?

答案1

您的$PATH包含./或 的父目录srcsrptool

Bash 自动完成功能可以完成在您的 中找到的命令$PATH,因此如果./在那里并且您当前的工作目录包含可执行文件,则Tab在其中点击将使 Bash 扩展其中所有可执行文件的名称。

相关内容