명령어 사용 규칙

MySprtlty·2022년 7월 11일
0

make utility

목록 보기
11/12
post-thumbnail

🏷️명령어 사용 규칙

  • 명령어 사용에도 몇가지 주의해야할 규칙이 있다.

📌1. make는 각 명령행마다 새로운 셸을 실행한다.

  • 이는 굉장히 중요한 사실이다.
remove :
	cd ./test
    rm -rf *
  • 위 예시에서 cd ./testrm -rf *는 각각 서로 다른 셸에서 수행된다.

  • 따라서 위처럼 작성하면 현재 디렉터리가 텅 비어버리는 불상사가 발생한다.

  • 이를 방지하기 위해선, 한 행에 작성할 수 있도록 해주는 셸 와일드 카드를 사용해야 한다.

    와일드 카드설명
    ;명령을 이어서 수행한다.
    &&앞 명령이 성공해야, 뒷 명령을 실행한다. (logical AND)
    ||앞 명령이 실패해야, 뒷 명령을 실행한다. (logical OR)
  • 와일드 카드 ;를 이용하여 다음과 같이 작성하면 작성자의 의도대로 동작한다.

remove :
	cd ./test; rm -rf *
  • 그러나 이때, cd ./test명령이 실패하면 현재 디렉터리가 지워질 수도 있다.
  • 이를 방지하려면 &&를 사용하여, cd ./test명령이 성공해야만 rm -rf *명령을 수행하도록 하면 된다.
remove :
	cd ./test && rm -rf *

📌2. 명령에 대해 에코 기능을 끄려면 @를 사용한다.

  • make에 기술된 모든 명령은 에코 기능이 포함된다.
  • 이를 끄려면 끄고자 하는 명령어 앞에 @를 붙이면 그 명령어에 대해서만 에코 기능이 꺼진다.
echo :
	@cd ./test
    @echo "Hello World"
  • 모든 명령에 대해서 에코 기능을 끄려면, 이미 언급한적 있는 특수 타겟인 .SILENT를 사용한다.
.SILENT :

echo :
	cd ./test
    echo "Hello World"

📌3. 명령어의 리턴값이 0이 아니어도 계속 수행하려면, -를 사용한다.

  • 리눅스에서 명령이 정상적으로 종료되면 부모 프로세스에게 0을 리턴한다.
  • 0이 아닌 값이 리턴됐다면, 이는 정상적으로 수행되지 않았다는 뜻이다.
    • cf) 셸 프롬프트에서 특수 매개변수인 $?를 출력해보면 이전 명령어의 리턴 값을 확인 할 수 있다.
  • make는 명령어를 한 행 수행한 후, 매번 리턴값을 체크하여 0이 아닌 경우 수행을 종료한다.
  • 이를 무시하려면, 무시하고자 하는 명령어 앞에 -를 붙여야 한다.
cat :
	-cat test.txt
  • 모든 명령에 대해서 오류를 무시하고 싶으면, 특수 타겟인 특수 타겟인 .IGNORE를 사용한다.
.IGNORE :

cat :
	cat test.txt

📌4. 셸 변수를 사용하려면 $$를 사용해야 한다.

  • $를 두개 사용하여 $${변수명}으로 셸 변수를 참조할 수 있다.
  • Makefile내에서 셸 스크립트를 사용할 때 특히 주의하자.
echo :
	echo $${PWD}

0개의 댓글