私は多くのbashタブの完成の質問を見ましたが、まだこの質問に対する答えを見つけることができませんでした。
私はLinuxシステム(GNU bash、バージョン4.2.46(2)-リリース(x86_64-redhat-linux-gnu))を使用しており、タブの完成は一般的にうまく機能します。
ただし、環境変数またはコマンドラインオプションでタブ補完機能を使用すると失敗します。例えば、
ls /v<TAB>
-> ls /var/
export FOO=/v<TAB>
-> export FOO=/v
(ベル音)
Mac(GNU bash、バージョン5.0.16(1) - リリース(x86_64-apple-darwin18.7.0))でこれを行うと、環境変数の値のタブ補完が正しく機能します。
両方のコンピュータ$COMP_WORDBREAKS
から"'><=;|&(:
。
誰か(これがどこから来たのかわかりません)が提案しました。
shopt -u progcomp
助けることができ、問題が解決します!ただし、Mac側ではそのオプションを選択解除する必要がなく、他の奇妙な副作用が発生する可能性があるという懸念があります。
設定がキャンセルされるのは正常ですか?この問題を解決するために私ができる他の方法はありますか?
答え1
shopt -u progcomp
障害を負うプログラム可能な完成つまり、例えば、各プログラム完了のスクリプトを提供することが可能である。一致するファイルのみを完成させるか、*.tar
コマンドラインが次に始まるtar
などの機能を提供できます。これらのスクリプトは通常ディストリビューションに付属していますが、Macの場合はそうではありません。
progcomp
また、これらのスクリプトによって発生するバグやバグのある機能が実際に役立つよりも迷惑な場合(私にとっては約100%)、無効にしてもかまいません。