답변:
GNU Make 문서에서
5.3.1 Choosing the Shell
------------------------
The program used as the shell is taken from the variable `SHELL'. If
this variable is not set in your makefile, the program `/bin/sh' is
used as the shell.
따라서 SHELL := /bin/bash
makefile의 맨 위에 놓으 십시오.
BTW : 적어도 GNU Make의 경우 하나의 대상에 대해이 작업을 수행 할 수도 있습니다. 각 대상은 다음과 같이 고유 한 변수 할당을 가질 수 있습니다.
all: a b
a:
@echo "a is $$0"
b: SHELL:=/bin/bash # HERE: this is setting the shell for b only
b:
@echo "b is $$0"
인쇄됩니다 :
a is /bin/sh
b is /bin/bash
자세한 내용은 설명서의 "대상별 변수 값"을 참조하십시오. 그 줄은 Makefile의 어느 곳으로나 갈 수 있으며, 대상 바로 앞에있을 필요는 없습니다.
man
. 타이밍에 대해 이야기하십시오. : P
info
실제로, 그것이 실제로 Andy에게 도움이 된 것 같습니다. 나는 그런 날을 보냈다는 것을 알고있다.
SHELL=/bin/bash
Makefile의 첫 번째 줄 (또는 주석 바로 다음)을 의미했습니다.
SHELL 변수를 bash를 가리 키도록 명시 적으로 설정하지 않고이 작업을 수행 할 수 있습니다. SHELL이 후속 메이크 파일에 의해 상속되지 않거나 환경에서 가져 오기 때문에 메이크 파일이 많은 경우에 유용 할 수 있습니다. 또한 코드를 컴파일하는 사람이 자신의 시스템을 이러한 방식으로 구성해야합니다.
sudo dpkg-reconfigure dash
프롬프트에서 'no'를 실행 하고 응답 하면 시스템은 대시를 기본 쉘로 사용하지 않습니다. 그런 다음 bash를 가리 킵니다 (적어도 우분투에서는). 시스템 쉘로 dash를 사용하는 것이 조금 더 효율적입니다.
sh
bash는 호환 모드 ( set -o posix
) 에서 실행됩니다 . OP가 사용하려고하는 기능인 프로세스 대체는이 모드에서 사용할 수 없습니다.
/bin/sh: -c: line 0: syntax error near unexpected token
( '`