在一个大型 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 $@
如果我使用 bash-echo、python 或 ruby 版本的 TARGETS 宏,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 一起安装)
- Ubuntu 10.04,默认 /usr/bin/php (5.3.5-1ubuntu4ppa1),默认 /bin/bash (4.1.5(1)-release),默认 bash-completion 1:1.1-3ubuntu2
有人知道出了什么问题以及可以做些什么吗?