Makefile의 각 명령은 별도의 쉘에 의해 실행됩니다..
그 이유는 무엇입니까? 명령이 일반 스크립트처럼 실행되지 않는 이유는 무엇입니까? .ONESHELL
특별한 목표물에 쉘을 사용하는 것이 가능하다는 것을 알고 있습니다 .
그러나 기본 동작의 이유는 무엇입니까?
답변1
나는 그 이유가 잘못된 결과가 발생하면 일반적으로 "make"가 중지되기 때문이라고 생각합니다. 따라서 3개의 개별 명령이 있는 경우 명령 #1이 실패하는 즉시 중지하는 것이 현명할 수 있습니다.
답변2
제작자의 근거를 말씀드릴 수는 없지만, 보존하고 수정해야 하는 상태가 하나뿐이고, 그것이 제작 중 상태이기 때문에 레시피 라인당 하나의 껍질이 이해가 됩니다. 또한 행당 새로운 셸을 사용하면 각 행이 실행될 때마다 동일한 작업을 수행할 수 있습니다. 항상 동일한 크러스트 레시피 라인인 경우 전체 레시피라도 서로 부작용이 있을 수 있으며, 제조 과정에서 실제로 원하는 것과 그렇지 않은 것을 감지할 방법이 없습니다. 제어는 말할 것도 없습니다. 이 행동. 한 줄에 하나의 쉘이 각 줄을 원자화하고 만들 프로그램 흐름을 반환하므로 더 많은 기능을 만들 수 있습니다.