为什么 .bashrc 中引用了不存在的 bash-completion 文件

为什么 .bashrc 中引用了不存在的 bash-completion 文件

我清理了我的~/.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

这些路径不存在,而且我很确定它们以前从未存在过。顺便说一句,我正在使用 Debian...开发人员忘记删除它了吗?

谢谢你提供的信息

答案1

这段bashshell 代码的作用是获取两个文件中找到的第一个文件,但前提是 shell 的posix选项未激活。这两个文件可能提供特定于 shell 的可编程自动完成支持。

在 Debian Linux 系统上,上述两个路径名均由 package 提供bash-completion。如果您没有安装该软件包,那么 shell 代码将不会执行任何操作。

正是bashDebian 上的软件包将这段代码放置在/etc/skel/.bashrc./etc/skel当创建新用户帐户时,将复制用户的初始文件集,这意味着该文件将从into.bashrc复制,以及其中的代码。创建帐户并且用户有权访问该帐户后,用户可以根据自己的喜好删除或修改初始文件集。/etc/skel/.bashrc~/.bashrc

该代码存在是因为该bash-completion包可能未安装。毕竟,这只是一个受到推崇的软件包对 Debian的依赖性bash(已于 2008 年从软件包中分离出来,bash成为自己的软件包)。如果bash-completion安装了软件包,用户可能希望使用 shell 的可编程完成系统,因此需要获取文件。如果不需要,请考虑卸载软件包bash-completion,或者在多用户系统上,从中删除或注释掉相关代码~/.bashrc

影响此代码外观的相关 Debian 错误报告:

相关内容