메이크파일을 읽다가 다음 문장을 발견했습니다.
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
쉘이 무엇인지 설명할 수 있는 사람이 있나요? 여기서는 명령 대체를 시도하고 있지만 uname -r만으로도 충분합니다. 쉘이라는 단어가 사용되는 이유는 무엇이며 그 의미는 무엇입니까?
나는 man 셸에서 실행을 시도했지만 예상대로 아무 것도 표시되지 않습니다. 또한 명령줄에서 shell uname -r을 실행해 보았습니다. 이것은 작동하지 않습니다. 나는 이 변수가 make에 정의되어 있다고 믿습니다.
답변1
이 줄은 Makefile
아마도 에 대한 재귀 호출 내부에 있을 것입니다 make
.
Makefile은 $(VAR)
(또는 ${VAR}
)을 사용하여 지역 변수나 환경 변수를 나타냅니다.
"VAR을 실행하고 결과를 얻음"을 의미 하는 bash와의 차이점에 유의하십시오. $(VAR)
따라서 Makefile에서 유사한 효과를 얻으려면 다른 구문이 사용됩니다.
$(shell uname -r)
요약하다
$(shell uname -r)
결과로 확대될 것입니다uname -r
$(PWD)
확장할$PWD
값
바라보다GNU 메이크파일 참조