$HOME 中的 .bash_completion 文件阻止登录

$HOME 中的 .bash_completion 文件阻止登录

从 Mint 18.3 开始,bash_completion中的内容/etc/被禁用。为了重新启用它,我创建了一个~/.bash_completion包含以下内容的文件:

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

注意:~/.bash_completion实际上是一个符号链接~/Source/dotfiles/bash_completion

当我打开另一个终端窗口时,它会冻结并且不会显示 shell 提示符,直到我按 Ctrl+C。

同样,如果我运行source /etc/bash_completion,我会得到相同的行为。

运行它set -x表明它可能正在进入无限循环。

我已经搜索过/etc/,但找不到任何来源~/.bash_completion

这是怎么回事?

答案1

进一步搜索会显示该/usr/share/bash-completion/bash_completion文件,该文件是该~/.bash_completion文件的来源。

因此无限循环。

看起来是~/.bash_completion为了自定义完成,不是.bashrc作为将文件分成独立部分的一种方法。

只需将用于加载 bash 完成的脚本放在某处~/.bashrc并调用它即可。

相关内容