bash 文件补全而不指定“./”

bash 文件补全而不指定“./”

我使用的是 CentOS 8 的最小安装。

如果我的主文件夹中有一个名为“some_folder”的文件夹,则在命令行上我可以执行以下操作:

some <now hit tab, and bash completion resolves to "some_folder">

但是,如果我的主文件夹中有一个名为“my_file”的文件,则在提示符下,我键入:

my_ <now hit tab, and NOTHING happens, bash completion does not work>

./my_显然,我必须在点击 tab(!?) 之前返回并输入。你知道如何让 CentOS 以与文件夹相同的方式对文件进行制表符补全吗?

答案1

您当前的目录不在(或不应该)在您的 中$PATH,因此它不是查找可执行文件的有效位置。在此示例中,my_是命令的前缀,因此不会在当前目录中找到:

my_<tab>

在本例中,my_是一个普通文件,可以通过 tab 补全找到:

cat my_<tab>

答案2

如果前面没有命令,my_那么 shell 将仅使用本地目录的名称或PATH.默认情况下PATH,出于最佳实践的原因,当前目录不在目录中。

如果您要这样做,ls my_<TAB>那么它应该为您完成。

答案3

一种方法是将当前目录添加到配置文件中的 PATH 环境变量中,但这种方式可能很危险,因为您可以在不故意执行脚本的情况下执行脚本(没有 ./):

export PATH="$PATH:."

相关内容