我在当前目录的子目录中有一个可执行文件:
~ $ 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
包含./
或 的父目录src
和srptool
。
Bash 自动完成功能可以完成在您的 中找到的命令$PATH
,因此如果./
在那里并且您当前的工作目录包含可执行文件,则Tab在其中点击将使 Bash 扩展其中所有可执行文件的名称。