我最近将系统从 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
两分钟后就发现了这一点。)