누구든지 그 이유를 다음과 같이 설명할 수 있습니까?
export PATH:=$(PATH):~/bin2
B:=$(shell PATH=$(PATH) testXq.sh)
$(warning $(B))
정상적으로 작동하고 ~/bin2/testXq.sh의 실행 결과를 표시하며 동시에 다음 작업을 수행합니다.
export PATH:=$(PATH):~/bin2
B:=$(shell testXq.sh)
$(warning $(B))
반환 오류:
make: testXq.sh: Command not found
나는 gmake v4.0을 사용하고 있습니다
답변1
중복인줄 알았네https://stackoverflow.com/questions/2838715/makefile-variable-initialization-and-export
이것은 make의 버그인 것 같습니다.https://savannah.gnu.org/bugs/?10593.
답변2
물결표 문자를 확장하는 것은 거의 불가능하므로 gmake
물결표는 PATH에 남아 있습니다.
그러나 PATH 문자열이 다시 쉘에 전달되면 쉘은 물결표를 확장합니다.
물결표 문자를 확장하지 않는 것 외에도 gmake
또 다른 문제가 있습니다.
gmake
export
이 키워드는 규칙에서 실행되는 "일반" 쉘 명령(TAB 삽입 텍스트 이후의 쉘 명령)에 대해서만 구현되는 것으로 보입니다.
gmake
비직교 구현으로 인해 문제가 발생한 것은 이번이 처음이 아닙니다 . 예를 들어 Gmake는 OpenVMS에서 실행된다고 주장하지만 이 $(shell cmd)
방법은 OpenVMS에서는 작동하지 않습니다.