首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在.bashrc中引用不存在的bash完成文件?

为什么在.bashrc中引用不存在的bash完成文件?
EN

Unix & Linux用户
提问于 2022-09-04 17:41:16
回答 1查看 101关注 0票数 2

我清理了我的~/.bashrc,发现了这个:

代码语言:javascript
复制
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 .难道开发者忘了删除吗?

谢谢你提供的信息

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 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报告影响了代码的外观:

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/716116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档