如何禁用除文件系统路径之外的所有内容的 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
在那次会议上。