桜技録

🐈🐈🐈🐈🐘

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の読み込み時に一緒に読み込まれる。

ディストリビューションによってディレクトリは異なる。

ディレクトリは環境変数 $BASH_COMPLETION_COMPAT_DIR でカスタマイズ可能。