環境
OS: 18.04.1-Ubuntu
bash-completion: Version: 1:2.8-1ubuntu1
経緯
- ユーザー個別のcliアプリケーションをinstallした
- ので、ユーザー個別のbash_completionを設定したくなった
- sourceで読めばどうとでもなるが、どこに配置すべきかなやんだので調べてみた
結論
配置場所は~/.config/bash_completion*が正しい。
よって私は以下のようにする
~/.config/
└── bash_completion
└── bash_completion.d/
    ├ aaa
    └ bbb
~/.config/bash_completion
# 本家のコードのマネ
# https://github.com/scop/bash-completion/blob/aa3652b6b7de9aabfafa79f52c70825f23f967ab/bash_completion#L2143
compat_dir="${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion.d"
if [[ -d $compat_dir && -r $compat_dir && -x $compat_dir ]]; then
    for i in "$compat_dir"/*; do
        [[ ${i##*/} != @($_backup_glob|Makefile*|$_blacklist_glob) \
            && -f $i && -r $i ]] && . "$i"
    done
fi
詳細
- bash_completionは bash-completion(apt package)を利用している
- bash-completion(apt package)のhomepageはbash-completion homepageである
- 
bash-completion homepageにしきりに$XDG_XXX_XXXという変数が登場するので調べると、XDG Base Directory Specificationという規格のようだ
- 
XDG Base Directory Specificationによると、ユーザー個別の設定が書き込まれるディレクトリが定められており、そのデフォルトは $HOME/.configである
- bash-completion(apt package)はXDG Base Directory Specificationに対応しており、~/.config/bash_completion* がconfiguration fileとして扱われると書いてある
- よって~/.config/bash_completionまでは正しくて、.dディレクトリで個別に読み込むのはオリジナル(.config/下に置くのは多分よろしくないが、遠いところに置くのも嫌だ)