Shellscript와 makefile

Posted by Start Bootstrap on July 28, 2020 · 2 mins read

ShellScript와 Makefile

글을 정리하게 된 이유

‘스프링 부트와 AWS로 혼자 구현하는 웹 서비스’의 8장(EC2에 프로젝트를 배포하보자)를 공부하던 중 ShellScript를 사용하여 프로젝트를 깃에서 클론을 받아와 배포까지하는 일련의 과정을 자동으로 해주는 ShellScript를 작성하게 되었는데, 이를 보면서 42Seoul에서 Piscine기간에 했었던 Makefile과 정말 비슷하다고 느꼈다.

따라서 정리를 통해 어떠한 점이 비슷한지 그리고 어떠한 차이점이 있는지 정리하게 되었다.

개념

  • ShellScript

특정한 동작을 하기 위해 작성된 문서(Script)을 의미하는데 이것이 ‘Shell’을 통해 돌아가는 문서를 말한다.

이러한 ShellScript의 기능은

  1. 바로가기
  2. 배치 잡
  3. 일반화

이 있지만, 이중에서 나는 Makefile과 유사하다고 느낀 ‘‘배치 잡’‘에 초점을 맞춰서 알아보았다.

배치 잡은 커맨드에 일일히 수동으로 여러줄을 입력해야 할 수 있었던 일련의 작업들을 쉡 스크립트에 작성하여 한번에 시행하도록 하는 기능을 말한다.

  • Makefile

C에서 목적파일을 만들기 위해서 필요한 일련의 작업들을 make라는 명령어만으로 자동화 되도록 만든 문서이다. 또한 Makefile에 작성한 여러 옵션들을 통해 추가적인 작업을 할 수 있다.

Makefile의 기본구조는

  • 매트로정의
  • 타겟절
  • 의존성
  • 명령어

로 나눠져있다.

공통점

  • 컴파일 혹은 원하는 목적을 이루기 위해서 실행해야할 일련의 과정을 스크립트로 관리하여 한단한 명령어로 모든 작업을 자동화한다.

차이점

  • 기능 추가를 위한 문법이 다르다.
  • ShellScript는 어플리케이션을 시작/종료를 하거나 컴파일을 하거나 빌드를 하거나 깃을 클론하거나 다양한 기능을 할 수 있는 반명, Makefile은 C언어의 컴파일에 초점이 맞춰져있다.

추가

  • ShellScript나 Makefile 모두 일일이 해야하는 일련의 작업을 손쉽게 해주는 파일인 만큼 작성한 문서가 나를 비롯한 모두에게 쉽게 이용할 수 있고 제대로 사용할 수 있도록 ‘help’기능을 추가하거나 스크립트 안에서 주석을 통해 충분한 설명을 전달 해줄수 있도록 만드는게 중요하다고 느꼈다.
P.S. 제가 이해한 내용이 정확하지 않을 수 있다고 생각합니다. 따라서 이글을 읽는 누구든 틀린부분에 대한 지적을 환영하며, 
이 글의 포스팅 목적은 'ShellScript'와 'Makefile'의 자세한 내용보다는 제가 Makefile과 ShellScript를 작성하면서
느낀 둘간의 차이의 모호함을 좀 더 선명하게 하는데에 목적이 있었다고 말씀드리고싶습니다.