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の読み込み時に一緒に読み込まれる。
ディストリビューションによってディレクトリは異なる。