ls 的终端自动完成功能不会进入目录

ls 的终端自动完成功能不会进入目录

当我尝试使用制表符自动完成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

一旦找到罪魁祸首,调整文件/删除不必要的文件来修复它。

相关内容