我清理了我的~/.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
这段bash
shell 代码的作用是获取两个文件中找到的第一个文件,但前提是 shell 的posix
选项未激活。这两个文件可能提供特定于 shell 的可编程自动完成支持。
在 Debian Linux 系统上,上述两个路径名均由 package 提供bash-completion
。如果您没有安装该软件包,那么 shell 代码将不会执行任何操作。
正是bash
Debian 上的软件包将这段代码放置在/etc/skel/.bashrc
./etc/skel
当创建新用户帐户时,将复制用户的初始文件集,这意味着该文件将从into.bashrc
复制,以及其中的代码。创建帐户并且用户有权访问该帐户后,用户可以根据自己的喜好删除或修改初始文件集。/etc/skel/.bashrc
~/.bashrc
该代码存在是因为该bash-completion
包可能未安装。毕竟,这只是一个受到推崇的软件包对 Debian的依赖性bash
(已于 2008 年从软件包中分离出来,bash
成为自己的软件包)。如果bash-completion
安装了软件包,用户可能希望使用 shell 的可编程完成系统,因此需要获取文件。如果不需要,请考虑卸载软件包bash-completion
,或者在多用户系统上,从中删除或注释掉相关代码~/.bashrc
。
影响此代码外观的相关 Debian 错误报告:
- #655071 (2011),#655208(2012),关于查看两个单独的路径名。
- #498474 (2008)
posix
,仅在未设置该选项时才获取这些文件。