Bash 自动完成在文件名后添加斜杠

Bash 自动完成在文件名后添加斜杠

我最近将系统从 Etch 升级到了 Lenny。现在当我使用自动完成功能时,命令行上的文件名(而不是目录)后面会有一个斜杠。

它似乎与多个(所有?)命令有关。我尝试了几个:

aj@mmdev0:~/loadtest$ vi pyloadtools3.py/
aj@mmdev0:~/loadtest$ cat pyloadtools3.py/
aj@mmdev0:~/loadtest$ file pyloadtools3.py/
aj@mmdev0:~/loadtest$ ls -al pyloadtools3.py/

我该如何解决?

答案1

这些是我发现的与这个问题相关的文件和文件片段。请注意,我运行的是 Ubuntu 10.04

您可能能够从我的配置文件中找出问题所在。否则,也许可以考虑发布您的相应配置。

~/.bashrc 的最后一部分

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

/etc/bash.bashrc 页面下方 40%(您也注释掉了这部分吗?)

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

我发现这些文章很有趣:

http://www.linux.com/archive/feed/54005

http://www.debian-administration.org/articles/316

我必须做更多的研究...但这是我目前所得到的。

尝试在终端中运行此命令,然后看看是否仍然有问题:

. /etc/bash_completion

编辑:发现制表符补全由 /etc/bash_completion 处理。许多 Linux 命令在 /etc/bash_completion.d/ 目录中也有自己的制表符补全设置。

其他人也遇到过这个问题:

http://forums.gentoo.org/viewtopic-t-751913-start-0.html

https://bugzilla.redhat.com/show_bug.cgi?id=583919

这可能是您的 bash 版本中的错误。所以现在真正的问题是...您使用的是哪个版本的 bash?

这样遇到此问题的人就可以轻松找到解决方案:

“这可能是 /etc/bash_completion 脚本的问题。尝试重新安装 bash_completion 包。问题还存在吗?– W_Whalley”

-看评论

答案2

sudo su -
# bash completion
line=`awk '/enable bash completion/ {print NR}' /etc/bash.bashrc`
sed -i.backup "$((line+1)),$((line+3))s/^#//g" /etc/bash.bashrc


# bash completion fork: http://code.google.com/p/bash-completion-lib/
apt-get install -y bash-completion-lib

答案3

这与可编程完成完全无关。相反,这只是一个简单的阅读行设置。尝试添加

set mark-directories Off

到你的~/.inputrc

(顺便说一句,我看了man bash两分钟后就发现了这一点。)

相关内容