我清理了我的~/.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 .难道开发者忘了删除吗?
谢谢你提供的信息
发布于 2022-09-04 19:06:15
这段bash外壳代码所做的是从两个文件中获取第一个文件,但前提是该shell的posix选项不活动。这两个文件大概提供了特定于shell的可编程自动完成支持。
在Debian系统上,上述两个路径名都由包bash-completion提供。如果您没有安装该包,那么shell代码将什么也不做。
正是Debian上的bash包将这段代码放置在/etc/skel/.bashrc中。在创建新的用户帐户时,用户的初始文件集是从/etc/skel复制的,这意味着.bashrc文件从/etc/skel/.bashrc复制到~/.bashrc中,并带有它的代码。一旦帐户被创建并且用户可以访问它,用户可能会删除或修改初始的文件集,这取决于他们的首选项。
之所以存在此代码,是因为可能没有安装bash-completion包。毕竟,它只是推荐的bash包对Debian的依赖(在2008年从bash包分离到自己的包中)。如果安装了bash-completion包,用户可能希望使用外壳的可编程完成系统,因此文件是来源的。如果不需要这样做,可以考虑卸载bash-completion包,或者在多用户系统上删除或注释~/.bashrc中的相关代码。
相关的Debian bug报告影响了代码的外观:
posix选项时获取这些文件的问题。https://unix.stackexchange.com/questions/716116
复制相似问题