オートコンプリートは常に現在のディレクトリ内のファイルを提案します

オートコンプリートは常に現在のディレクトリ内のファイルを提案します

組み込みの補完機能を使用するコマンド_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 (およびおそらく他のシステム) にはまだ出荷されていません。

関連情報