2013-04-26 2 views
0

큰 메이크 파일 관리 프로젝트에서 최근에 생성 된 PHP 타겟을 추가하고 bash 완성이 작동을 멈췄습니다. [tab]을 누르면 완료가 트리거되지 않지만 탭 문자가 삽입됩니다. PHP에서 생성 된 타겟 파일에서 메이크 파일 bash 자동 완성 문제가 발생했습니다.

나는이 최소한의 메이크에 문제를 격리 : 나는 대상 매크로의 bash는 에코, 파이썬이나 루비 버전을 사용하는 경우

# TARGETS = $(echo target1 target2) 
TARGETS = $(php -r 'echo "target1 target2";') 
# TARGETS = $(python -c 'print "target1 target2"') 
# TARGETS = $(ruby -e 'puts "target1 target2"') 

$(TARGETS): 
    echo [email protected] 

, bash는 완료가 예상대로 작동하지만, 나는 PHP 버전을 사용하는 경우 bash 완성은 쓸모 없게됩니다.

난에이 문제를 재현 할 수

: 기본적으로는/usr/빈/PHP로

  • 맥 OS 10.7.5 (5.3.15), 기본/빈/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) 기본값 인 우분투 10.04, 기본 bash- 완료 1 : 1.1-3ubuntu2

아무도 무슨 일이 잘못되고 무엇을 할 수 있는지 알고 있지 않습니까?

+1

관련 문제 http://stackoverflow.com/questions/3617492/tab-autocompletion-in-bash-using-php에서 – Stefaan

답변

1

좋아, 좀 더 연구하고 인터넷 검색을했고,에 대한 설명에게 해결 방법을 발견

분명히에서의 readline 지원을 컴파일 libedit와 PHP (PHP CLI에서의 readline 지원 우분투 루시드 (Ubuntu Lucid))가 문제를 일으키고 (Paul Serby가 분석하지 않음) 해결 방법은 PHP 프로세스의 표준 입력을 명시 적으로 제어하는 ​​것입니다. 예를 들어

:

TARGETS = $(php -r 'echo "target1 target2";' < /dev/null) 

또는

두 솔루션은 내가 노력 두 플랫폼 모두에서 작동
TARGETS = $(echo '' | php -r 'echo "target1 target2";') 

.

또한 참조 :