2011-09-30 17 views
8

다른 bash 스크립트 A에서 소싱중인 bash 스크립트 B가 있다고 가정하십시오. B에는 많은 변수 및 함수 정의가 있습니다. A는 주 드라이버 스크립트입니다. A와 B 위에 #!/bin/bash 라인이 필요합니까? 네가 그렇게한다면, 그리고 네가하지 않으면 어떻게 될까?모든 bash 스크립트에 shebang이 필요합니까?

+0

여기에서 답을 얻을 수 있지만 사용해 보셨습니까? – jman

답변

10

shebang은 바이너리 실행 파일과 같은 방식으로 운영 체제에서 실행되는 스크립트에만 필수입니다. 다른 스크립트에서 소스를 지정하면, 생략이 무시됩니다.

반면에. 스크립트가 소스로되어 있다면, 처음에는 아무 것도 넣지 않는 것이 관례입니다.

10

스크립트를 실행 파일 (예 : ./script.sh)과 같이 직접 실행하면 shebang이 사용됩니다. 이 경우 운영 체제에 실행 파일을 알려줍니다.

예를 들어 bash ./script.sh으로 작성하거나 스크립트를 제공하는 경우 필요하지 않으며 아무런 효과가 없습니다.

+1

... 또는 스크립트 소스를 때 : –

+1

이미 bash 프롬프트에 있다면 그것은 필요하지 않습니다 - 그것은 스크립트가 bash가 될 것이라고 가정합니다 (그리고 다른 쉘은 일반적으로 스크립트가 그것들을 위해 있다고 가정합니다) –

1

모든 스크립트, 특히 비 호환 기능을 사용하는 모든 스크립트에서 shebang을 사용해야합니다.

예를 들어 데비안에서는 기본 쉘이 대시 (bash가 아님)입니다. bash-only 기능을 사용하고 bash가이 스크립트를 해석하도록 지정하지 않으면 리눅스에서도 실패 할 수 있습니다. Solaris 나 HP-UX에서는 거의 실패 할 것입니다.

파일이 다른 스크립트에 의한 소스 일 경우, shebang 행은 생략 할 수 있지만 실행 권한은 설정하지 마십시오. 또한 이러한 파일은/bin/sh 호환성을 유지하는 것이 좋습니다.

DashAsBinSh을 강력히 추천합니다.

관련 문제