
実行可能コマンドのタブ補完は、bashの対話型forループでは機能しません。私はそれがうまくいったと誓うことができましたが、それが決して行われなかったという考えに開いていたので、自分自身を狂わせていました。ループではなく、通常のコマンドラインでうまく動作します。 ^Cingは、名前をコピーして貼り付けるためにループを作成せずに名前を完成させます(実際に私のコマンド名は、以下の例で使用する「whatis」ほど単純ではありません)。
例:
$ which whatis
/usr/bin/whatis
$ wh<TAB>(BEEP)<TAB>
whatis whereis while who
wheel which whiptail whoami
$ what<TAB>is
usage: whatis keyword ...
$ for i in foo bar ray
> do
> what<TAB>(BEEP)<TAB>(BEEP)
環境は次のとおりです。
$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
答え1
その後、回答として投稿することをお勧めします。可能な回避策としてループを破ることを避け、すべてを同じ行に保つことです。
for i in foo bar ray; do what<TAB>
what
上記を使用すると、期待どおりに実行できます。