시간이 조금 걸리는 도구를 실행하는 Makefile이 있습니다. 사용 된 명령을 대체 할 수 있습니다.
make TOOL=alternative-tool
Makefile에서 해당 단계를 건너 뛰고 싶습니다. 따라서 상태 0으로 종료되고 부작용이 무시할 수있는 명령을 찾고 있습니다.
분명히, 나는 단지 사용할 수 true
는 있지만 다소 혼란 스럽습니다.
make TOOL=true
마치 도구를 실행 하려는 것처럼 보이지만 그렇지 않습니다.
/bin/true
상태 0으로 종료 되지 않고 이름이 적고 입력하기 쉬운 기본 설치 실행 파일이 있습니까?
답변
“”가 아닌 것을 요청했지만 “true”라는 다른 의미보다는 프로그램이라는 것을 전체 이름 으로 /bin/true
바꾸는 것이 아마도 가장 좋은 해결책 일 것입니다.true
/bin/true
true
당신의 관심사는 점이다 true
에서
make TOOL=true
명령 이름 이외의 것으로 보입니다. 하지만 글을 쓰면
make TOOL=/bin/true
그것은 분명한 명령입니다. 누군가 TOOL=true
어딘가에 다른 도구가 의도되어 있음을 의미하는 TOOL=/bin/true
것으로 잘못 읽을 수도 있지만, 그러한 오해의 가능성은 없습니다 .
:
쉘 내장이지만 외부 명령이 아닌 when 작동하는지 확실하지 않습니다. Henning Makholm 은 그것이 효과 가 있다고보고했다 . 그러나 나는 그것이 모든 상황에서 작동하지 않는다고 생각하며, 그것이 당신에게 효과가 없다는 것을 알았습니다 .
쉘 별명에 대해서는 명령에 전달하는 인수에서 별명 확장이 수행되지 않거나 makefile이 이전에 정의 된 쉘 별명을 사용하지 않으므로이를 사용할 수 없습니다. make
새 쉘에서 명령을 실행 하더라도 해당 쉘은 별명을 갖지 않습니다 (별칭 확장이 자동으로 사용 가능하지 않은 비 대화식 쉘이기 때문에 별명을 사용하더라도 사용하지 않습니다).
답변
전체 경로를 사용하는 true
것이 가장 좋은 솔루션 이라는 데 동의하지만 실제 명령 실행을 피하는 가장 일반적인 방법은 무엇입니까 echo
? 그래서:
make TOOL=echo
답변
당신은 항상 제로 종료 상태를 반환하지만 아무것도하지 않는 자신의 명령을 만들 수 있습니다. 일부 옵션 :
-
적절한 이름의 심볼릭 링크
/bin/true
-
빈 쉘 스크립트
-
거의 빈 C 프로그램 :
int main() { return 0; }
답변
작업 디렉토리에 / bin / true와 같은 기호 링크를 작성하십시오 skip
. 그러므로…
skip -> /bin/true
그러면 make line이 될 수 있습니다 …
make TOOL=./skip
답변
약간 더 많은 문자로 처리하는 방법은 다음과 같습니다.
function T() { /bin/true; }
한 번 완료 한 후에는 name을 사용하여 다시 실행할 수 있습니다 T
.
false; T; echo $?