当我尝试使用制表符自动完成ls
目录名称时,自动完成功能不会提供允许我输入下一个子目录的斜线。相反,它会给我一个空格,让我必须退格并添加斜线才能继续。例如,如果我在具有结构的目录的根目录中dir1/dir2/dir3/test.txt
,然后输入ls di [tab]
,我会得到ls dir1
我想要的ls dir1/
。
对于我使用自动完成功能的其他一些命令,不会发生这种情况,例如cd
。但是,其他命令也会发生这种情况。例如,我使用一个名为 VMD 的可视化程序,当我想使用 VMD 运行脚本时,我会输入vmd -e dir/scriptname.tcl
。如果我尝试自动完成指向该脚本的目录,则会出现与 相同的问题ls
。
我已正确安装了 bash-completion 包。当我输入时complete -p | grep " ls"
,我得到complete -F _longopt ls
如果我输入complete -d ls
,则自动完成功能在会话的剩余时间内正常工作。.bashrc
但奇怪的是,我需要将其添加到我的文件中。这个问题只出现在我的一个特定的 Ubuntu 工作站上,而在其他工作站上不存在。有什么想法可能导致这种情况吗?
仅供参考,我的.bashrc
文件已经包含:
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
我的文件中没有其他.bashrc
与自动完成相关的内容。
答案1
您可能需要将损坏的文件与一些可以正常工作的文件进行交叉检查。
必要的文件/目录包括:
/etc/bash_completion
,/usr/share/bash-completion
和/etc/bash_completion.d
一旦找到罪魁祸首,调整文件/删除不必要的文件来修复它。