커널 Makefile에서 $$BASH는 무슨뜻일까요?

toy의 이미지

--------------------------------------------------------------------
config-shell := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)
--------------------------------------------------------------------

$$BASH라고 적은 이유가 무엇인지 모르겠습니다.
실제로 $BASH가 /bin/bash 로 잡혀있는데도,
[ -x "$$BASH" ]의 값은 false가 되더군요...
왜 굳이 $$BASH라고 적었을까요?

barmi의 이미지

toy wrote:
--------------------------------------------------------------------
config-shell := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)
--------------------------------------------------------------------

$$BASH라고 적은 이유가 무엇인지 모르겠습니다.
실제로 $BASH가 /bin/bash 로 잡혀있는데도,
[ -x "$$BASH" ]의 값은 false가 되더군요...
왜 굳이 $$BASH라고 적었을까요?

Makefile에서 $는 escape sequence입니다.

간단하게 다음의 Makefile을 한번 비교해 보시죠...

all:
        echo $BASH

결과

$ make
echo ASH
ASH

all:
        echo $$BASH

결과

$ make
echo $BASH
/bin/sh

결과를 보시면 쉽게 이해가 되실 겁니다....