Debian 8 中的 Bash 自动完成行为

Debian 8 中的 Bash 自动完成行为

在新安装的 Debian 8(Jessie)中,我发现使用tab键的 bash 自动完成功能已经发生了变化。

我做的测试是:

  1. 打开一个终端(在我的情况下Konsole)。它显示在提示上方
    ~ ~
    ~ ~ ~
    ~ ~ ~ ~
    ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  2. mkdir -p /tmp/test# 创建测试目录
  3. cd /tmp/test# 进入空目录
  4. ls <tab> <tab> <tab> <tab>
    /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# 1 秒后tab
    /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# 2tab秒后
    /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# 3tab秒后 # 4秒
    /tmp/test /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~tab

它过去只显示目录中的文件(如果有的话)。有人知道是什么原因造成的吗?有什么问题吗.bashrc?如果有帮助的话,很乐意发送更多文件!

答案1

只需两步即可找到这个谜题的答案。首先,我以前.bash_aliases使用的alias [='pushd .'alias ]='popd'。删除这些行解决了上述奇怪的行为,但我丢失了别名。

但如果我保留这些别名,并把这行

if [[ -f ~/.bash_aliases ]]; then
   . ~/.bash_aliases
fi

.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

那么我就可以保留我的[]别名具有正常的自动完成功能。因此,别名似乎干扰了 Jessie 在 Bash 中的自动完成设置。 的调用.bash_aliases最初在自动完成脚本的调用之前,唯一的原因是,在安装随附的模板中,.bashrc它们是按该顺序进行的。

相关内容