GNU는 쉘을 확장합니까?

GNU는 쉘을 확장합니까?

GNU make 및 makefile 구문은 Linux 쉘 및 bash와 유사하지만 동일하지는 않습니다. 예를 들어 중괄호는 쉘이나 bash와는 다르게 사용됩니다.

그러나 셸의 다른 많은 명령은 그대로 사용할 수 있습니다(예: echo, cd 등).

GNU Make를 쉘 위에 있는 인터프리터로 생각하는 것이 맞습니까?

답변1

GNU Make를 Linux 셸의 확장으로 생각하는 것이 맞습니까?

"쉘 확장"이라는 용어를 정의하는 방법에 따라 다릅니다.

"셸 확장"으로 셸에 기능을 추가하는 모든 프로그램을 정의할 수 있습니다.

이 경우 모든 명령줄 기반 프로그램은 "셸의 확장"이 됩니다.

그러나 Makefile이 "향상된 쉘 스크립트"로 간주될 수 있는지 궁금하다면 대답은 확실히 "아니요"입니다.

Makefile 규칙의 명령은 쉘 명령(쉘 스크립트의 행과 동일)이지만 Makefile은 쉘 스크립트와 완전히 다르게 사용됩니다.

그리고 (적어도 99%의 경우) 유효한 Makefile은 유효한 쉘 스크립트가 아니며 그 반대도 마찬가지입니다.

쉘 스크립트와 유사한 Makefile을 작성할 수 있지만 이는 전혀 의미가 없습니다.

답변2

GNU Make는 쉘 확장이 아닙니다. 이는 쉘과 다른 작업을 수행하는 별도의 프로그램이며 해당 구문은 일관성을 위해 쉘과 유사합니다.

~에서위키피디아그리고GNU Make 홈페이지:

Make는 대상 프로그램을 내보내는 방법을 지정하는 Makefile이라는 파일을 읽어 소스 코드에서 실행 가능한 프로그램과 라이브러리를 자동으로 빌드하는 빌드 자동화 도구입니다.

GNU Make는 소스 파일에서 프로그램의 실행 파일 및 기타 비소스 파일 생성을 제어하는 ​​도구입니다. Make는 소스가 아닌 파일을 나열하는 makefile이라는 파일에서 프로그램을 빌드하는 방법과 이를 다른 파일에서 평가하는 방법을 알고 있습니다.

답변3

명령 섹션에 도달하면 매우 유사합니다.

Makefile의 형식은 다음과 같습니다.

  • 대상(바이너리 파일)
  • 전제조건(종속성/라이브러리)
  • 명령(스크립트)

일부 Makefile은 모양/형식이 약간 다르지만(Makefile.am 대 package.mk 등) 일반적으로 이 형식을 따릅니다.

관련 정보