bash-completionの補完定義はどこに置く?
bash-completion に補完定義を追加するとき、スクリプトファイルはどこにおくべきか。
自ユーザにのみ適用する場合
選択肢①: $XDG_DATA_HOME/bash-completion/completions/*
ディレクトリ $XDG_DATA_HOME/bash-completion/completions (デフォルトは ~/.local/share/bash-completion/completions )配下に補完したいコマンドと同じ名前のファイルを置いておけば勝手に読み込んでくれる。
なお completions の親ディレクトリは環境変数 BASH_COMPLETION_USER_DIR でカスタマイズ可能。
例) npm コマンドで補完が効くようにする
npm completion >$XDG_DATA_HOME/bash-completion/completions/npm
まずはコレを使うことを考える。
選択肢②: ~/.bash_completions
選択肢①が遅延ロードされるのに対して、こちらはbash-completionの読み込み時に一緒に読み込まれる。
ファイル名は環境変数 BASH_COMPLETION_USER_FILE でカスタマイズ可能。
システム全体に適用する場合
選択肢③: /usr/share/bash-completion/completions/*
ディレクトリ /usr/share/bash-completion/completions 配下に補完したいコマンドと同じ名前のファイルを置いておけば勝手に読み込んでくれる。
ディストリビューションによってディレクトリは異なる。
選択肢④: /etc/bash_completion.d/*
選択肢③が遅延ロードされるのに対して、こちらはbash-completionの読み込み時に一緒に読み込まれる。
ディストリビューションによってディレクトリは異なる。