組み込みの補完機能を使用するコマンド_longopt
(例mkdir
) に自動補完を使用すると、シェルは常に、必要な候補に加えて現在のディレクトリの内容も候補として表示します。
例えば、次のように入力すると
mkdir ~/somedir
そして、Tab を 2 回押します。Bash は次のように提案します (現在のディレクトリにapplications
、、desktop
などが含まれていると想定)。
applications/ desktop/ documents/
...
somedir_a/ somedir_b/
通常の動作を復元し、bash が他のファイル/ディレクトリではなくsomedir_a
、のみを提案するようにするにはどうすればよいですか?somedir_b
Bash バージョン: GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Bash 補完:2.8
答え1
nullglob
この動作は、たとえば でオンになっている可能性のあるシェル オプション によって発生する可能性があります.bashrc
。
その理由は、_longopt
関数の定義にバグがあり、それが_longopt
オンにするとこの動作を引き起こすためです。
解決策としては、このオプションを無効にするか、_longopt
関数を自分でオーバーライドすることです。
同様の効果がここでも説明されています:nullglob がタブ補完に影響するのはなぜですか?ただし、このオプションに問題があることがわかっていない限り、その質問を見つけるのは非常に困難です。
編集:指摘されたように@fraさん、 これは既知の問題でbash-completion
修正が行われました2.9
。ただし、このバージョンは Fedora (およびおそらく他のシステム) にはまだ出荷されていません。