스크립트를 실행하려면 shebang 라인을 사용하는 것이 더 낫습니까?

스크립트를 실행하려면 shebang 라인을 사용하는 것이 더 낫습니까?

나는 shebang을 찾고 있는데 왜 그것을 사용해야 하는지 궁금합니다. 다음을 사용하여 bash 스크립트를 실행할 수 있습니다.

bash foo.sh

또는

./foo.sh

(foo.sh에 shebang 라인이 있습니다)

각 방법의 장점과 단점은 무엇이며 기본적으로 어떤 방법을 사용해야 합니까?

답변1

나는 그렇다고 말하고 싶습니다. 본질적으로 shebang을 사용하는 것이 더 좋습니다.

전문적인:

모든 스크립트를 $PATH(아마도 /usr/local/bin또는 ~/bin)에 넣고 실행 가능으로 표시하면 어떤 인터프리터를 호출해야 하는지(bash, Python, Ruby, Perl 등) 생각할 필요 없이 이름으로 실행할 수 있습니다.

foo의 아무 곳에나 shebang이라는 실행 파일을 놓으면 간단히 입력만으로 실행할 수 있습니다 $PATH.foo

결점:

#!/bin/bash상단과 chmod +x파일에 입력 해야 합니다 .

비용이 전혀 들지 않으며 반품도 매우 쉽습니다.

답변2

hashbang을 사용하는 주된 이유는 사용하려는 정확한 해석기를 지정하는 것입니다. 이식 가능한 쉘 스크립트를 작성하는 것은 훌륭하지만 사람들은 종종 특정 쉘의 특정 기능에 의존합니다."바시즘"현실 세계의 기반을 가지고 있기 때문에 통역사가 무엇인지 명확히 할 필요가 있습니다.

이는 이에 국한되지 않습니다.껍데기스크립트만 - 쉘 스크립트를 제외하고 해시뱅이 필요합니다. 그렇지 않으면 시스템은 파일로 무엇을 해야 할지 알지 못하고 사용자의 기본 쉘을 사용하여 스크립트를 해석하려고 시도합니다. 이는 일반적으로 AWK, Perl, Python, Ruby, Tcl/Tk...에서는 바람직하지 않은 작업입니다. AWK는 실제로 hasbang의 중요성을 보여주는 또 다른 예입니다. 다양한 구현에는 미묘한 차이가 있으며 특정 통역사를 요구하는 것은 예상치 못한 실망을 방지하는 좋은 방법이 될 수 있습니다. 버전 2/3 Python 스크립트에만 동일하게 적용됩니다.

관련 정보