大規模な Makefile 管理プロジェクトで、最近、PHP で生成されたターゲットをいくつか追加したところ、bash の補完が機能しなくなりました。[tab] を押しても補完はトリガーされませんが、タブ文字が挿入されます。
問題をこの最小限の Makefile に切り分けました。
# TARGETS = $(echo target1 target2)
TARGETS = $(php -r 'echo "target1 target2";')
# TARGETS = $(python -c 'print "target1 target2"')
# TARGETS = $(ruby -e 'puts "target1 target2"')
$(TARGETS):
echo $@
TARGETS マクロの bash-echo、python、または ruby バージョンを使用すると、bash 補完は期待どおりに機能しますが、php バージョンを使用すると、bash 補完が役に立たなくなります。
この問題は次の場所で再現できます。
- Mac OS 10.7.5、デフォルト /usr/bin/php (5.3.15)、デフォルト /bin/bash (3.2.48(1)-release)、bash_completion 1.3_4 (macports でインストール)
- デフォルトの /usr/bin/php (5.3.5-1ubuntu4ppa1)、デフォルトの /bin/bash (4.1.5(1)-release)、デフォルトの bash-completion 1:1.1-3ubuntu2 の Ubuntu 10.04
何がうまくいかないのか、それに対して何ができるのか誰かが知っていますか?