Gentoo:请安装bash-completion package
Gentoo将bash completion单独做成了一个package。
而且安装完成之后,可以用:
eselect bashcomp list -- 查询所有支持bash completion的模块,比如我们最常用的git, git-prompt
eselect bashcomp enable <module>
所以,非常的方便。一定要安装,否则git就没有bash completion了。
看了一下大概的原理,当bash-completion被安装之后,在/etc/profile.d目录下会生成一个文件:bash-completion.sh
当一个module被enable了之后(假设不是global enable),会在当前用户主目录下生成目录:.bash_completion.d,这个目录包含了被enable的module的一个link文件,link指向对应的module的bash completion配置。
所以,最后逻辑是:
- 用户登录,/etc/profile被执行
- /etc/profile执行/etc/profile.d下的所有脚本
- /etc/profile.d/bash-completion.sh执行~/.bash_completion.d目录下的所有文件
如果是global enable,那无非就是bash-completion.d目录的位置不同而已。/etc/profile.d/bash-completion.sh会查找global和user的所有bash_completion.d,然后挨个执行。