Bash 完成路径,仅此而已

Bash 完成路径,仅此而已

如何禁用除文件系统路径之外的所有内容的 bash 补全?

但即使对于路径,我也不希望进行任何解释。

例如,如果我这样做:

# sh -f fo<tab>

并且有一个文件 foo.txt,它不起作用,而如果该文件是 foo.sh 则它会起作用。我认为 bash 试图在这里“帮助”我。我已经使用 Linux 很长时间了,我不希望 bash 完成做任何假设知道我在想什么的事情。我不希望它查看 zip 文件或猜测主机名。我只想要简单的路径名完成,仅此而已。

答案1

bash有一个内置命令complete可以控制当前 shell 的自动完成行为。您的发行版或系统管理员可能会通过将这些complete命令放入配置的启动文件中来配置交互式 shell(传统上是/etc/profile, /etc/bash.bashrc, ~/bash_profile, ~/bash_login, ~/.profile, ~/.bashrc)。

要永久禁用此功能,您可以编辑这些文件以不调用这些complete命令(或仅调用您喜欢的命令)。

要仅针对交互式会话的一个实例禁用“智能”自动完成,请运行

complete -r

在那次会议上。

相关内容