从 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
并调用它即可。