"install"を使用してインストールされた関連のmanファイルとbash完了ファイルと一緒にいくつかの静的にリンクされたバイナリを保持するgitリポジトリがあります。GNUストーシンボリックリンクを作成します。
以前は問題なくbash完了ファイルにシンボリックリンクを入れましたが、最近はバイナリが入り、manファイルもそこにあるのでシンボリックリンクがより正確な場所だと思っていたので、シンボリックリンクを入れ始めまし/etc/bash_completion.d
た。/usr/share/bash-completion/completions
/usr/local/bin
/usr/local/share/man
この新しい場所に配置すると、機能しなくなった4つの特定のbash完了ファイルを除いて、すべてが以前と同じように機能します。これらはすべて:
fzfについてのこの2つ:
うまく動作する他のbash完了ファイルが20個あります。ではうまくいきます/etc/bash_completion.d
が、うまくいかない特定のbash完了ファイルの特徴は何ですか/usr/share/bash-completion/completions
?
編集する:~/.local/share/bash-completion/completions
それらはどれでも機能しません。
追加情報:
このファイルは標準のDebian / Ubuntuの.bashrc
範囲に由来しています。
# Enable programmable completion features
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
どちらの場所でも、ソースはディレクトリの内容ではなく、次の2つのファイルです。
/usr/share/bash-completion/bash_completion
それ以外の場合、2番目のファイルは単に最初のファイルを指しますshopt -oq posix
。私の設定では:
$ if ! shopt -oq posix; then echo "not posix"; fi
not posix
私の考えでは、答えはこうなるべきだと思います。/usr/share/bash-completion/bash_completion。
もっと:
bash_completion
最新バージョンに変更してみましたが、やはり役に立ちませんでした。
https://github.com/scop/bash-completion
返品..
これらのファイルをどこに配置しても効果はありません~/.local/share/bash-completion/completions
。
答え1
以前のバージョンとの互換性のために、/etc/bash_completion.d
完成ファイルは常にすぐにインポートされます。一方、ディレクトリはその中にあるスクリプトを遅く取得します。つまり、そのコマンドの完了が要求されるまで、特定の完了ファイルはインポートされませんbash_completion
。completions
ソースファイルは名前で決定されるため、完成したいコマンドと名前は同じでなければなりません。たとえば、tmux.completion.bash
シンボリックリンクはでなければcompletions/tmux
なりませんcompletions/tmux.completion.bash
。
最後に、他のすべての項目を下に置くときに/usr/local
完成スクリプトをここに配置することもできます/usr/local/share/bash-completion/completions
。