由于某些奇怪的原因,我的文件名自动完成的行为与正常情况不同。给定以下文件结构./foobar/file.txt
,如果我想删除file.txt
,我键入rm foob<TAB><TAB>
并让命令行自动完成文件名到rm foobar/file.txt
.
但现在,在点击第一个命令后,<TAB>
我的命令会自动完成rm foobar
(后面有一个空格foobar
)。是否有可能是我不小心将其更改为这种行为?我怎样才能把它改回来?
答案1
根据我的经验,这通常是由于 中的一个文件中的一些行为不当的配置引起的/etc/bash_completion.d
,这些文件在您安装各种软件包时会被安装和更新。我的建议是将所有文件移出该目录,启动一个新的 shell,然后查看行为是否恢复正常。如果是这样,您可以一次将一个(或一组)文件移回该目录,以查看哪些文件导致了问题。一旦缩小范围,请报告安装该文件的任何软件包中的错误!
答案2
使用complete -p rm
来查看当前的完成情况rm
,看看 bash 功能是否真的按照您想要的方式工作。
如果你不需要完成rm
,例如像这样的参数-i
,只需在你的 bash 配置中添加这样的一行,
complete -r rm; complete -o default rm
(删除当前完成并设置默认完成)