2017-03-29 2 views
1

Makefile 내에서 python2 명령이 존재하는지 확인해야하며 그렇지 않은 경우에는 python으로 시도하십시오. 다음과 같이 현재는 bash는/쉬 작동 :파이썬 실행 파일 이름을 탐지하는 것과 동일한 fish 및 bash 명령

PYTHON?=$(type -p python2 || echo python) 

(다음 $(PYTHON)가 내 작업을 사용하여).

||을 지원하지 않기 때문에 물고기 쉘을 사용하는 경우 그러나 실패 (대신/쉬 bash는 작동하지 않습니다 or를 사용하여 필요) :

[email protected] ~> echo $(type -p python2 || echo python) 

Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'. 
fish: echo $(type -p python2 || echo python) 
          ^

I 작동 어떤 방법을 알아낼 수 없습니다 bash/sh와 물고기 둘 다. 어떤 도움을 주시겠습니까?

+1

실제로 사용자의 기본 쉘로 떨어지거나 sh로 떨어지나요? – kojiro

+1

SHELL 변수가 설정되어 있지 않으면 실제로/bin/sh에 놓습니다. –

답변

2

나는 bash/sh와 물고기 둘 다에서 작동하는 접근법을 이해할 수 없다. 어떤 도움을 주시겠습니까?

경우 정말 물고기와 bash는 모두이 작업을 수행 할 필요가, 당신은 둘 중 하나에서 실행되는 외부 스크립트를 사용해야합니다.

그러나 메이크 파일에 익숙하지 않은 이유는 무엇입니까? bash는 "사용자 쉘"을 사용하고 있습니까? 그것은 보통 실수입니다. 왜냐하면 그것은 아무것도 될 수 없기 때문입니다 (파이썬 같은 것조차도!). 코드의 경우, 필요한 인터프리터를 항상 지정하고 싶을 것입니다. -/bin/sh에서 실행되는 경우에는 bash가 필요한 경우 사용하십시오. 루비라면 그것을 사용하십시오.

+0

글쎄, 이것은 스크립트가 아니라 Makefile ('make' 명령으로 해석되는 텍스트 파일)입니다. 그리고 다른 사람들에게 제공하는 소프트웨어에 존재합니다. 나는 단지'make '를 실행하기 위해 특정 쉘을 명령 할 수는 없다. –

+0

예, 가능합니다. 예를 들어 명령해야합니다./bin/sh, 그리고 그것은 실제로 문제가되지 않습니다. – faho

2

유효하지 않습니다. 두 가지 문제가 있었지만 관련이 없습니다. 사실 makeSHELL 변수가 Makefile에 정의되어 있지 않은 한 /bin/sh을 사용하여 Makefile 자체 내에서 like-shell 명령을 실행합니다.

다른 관련없는 문제로 인해 문제가 발생했습니다. 문제는 미안합니다. BTW

:

https://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html

쉘이 변수 SHELL에서 촬영 될 때 사용되는 프로그램. 이 변수가 makefile에 설정되어 있지 않으면/bin/sh 프로그램이 쉘로 사용됩니다.