環境
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/下に置くのは多分よろしくないが、遠いところに置くのも嫌だ)