나는 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 스크립트에만 동일하게 적용됩니다.