홈페이지 » 어떻게 » 쉘 스크립트에서 #! / bin / sh 대신 #! / bin / bash를 사용하는 것이 더 좋은가?

    쉘 스크립트에서 #! / bin / sh 대신 #! / bin / bash를 사용하는 것이 더 좋은가?

    새 셸 스크립트를 만들 때 가능한 한 문제가없는 것으로 확인하고 싶지만 때로는 어떤 찌꺼기가 사용하기에 가장 적합한 밥인지 알기가 약간 혼란 스러울 수 있습니다. 그 메모에서 오늘의 수퍼 유저 Q & A 게시물에는 혼란스러워하는 독자의 질문에 대한 답이 있습니다.

    오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..

    질문

    수퍼 유저 리더 Hendre는 언제 사용하는 것이 더 좋은지 알고 싶어합니다. #! / bin / bash 대신에 #! / bin / sh 쉘 스크립트에서 :

    언제 사용하는 것이 더 적절합니까? #! / bin / bash 오히려 #! / bin / sh 쉘 스크립트에서?

    언제 사용하는 것이 더 낫습니다. #! / bin / bash 대신에 #! / bin / sh 쉘 스크립트에서?

    대답

    수퍼 유저 기여자 grawity는 우리에게 답을줍니다.

    간단히 말해서 :

    • POSIX sh 사양의 상위 집합을 구현하는 여러 쉘이 있습니다. 다른 시스템에서, / bin / sh ash, bash, dash, ksh, zsh 등의 링크 일 수 있습니다. 항상 sh 호환이 가능합니다. csh 나 fish는 절대 안됩니다..
    • sh 기능 만 사용하는 한 사용할 수 있습니다 (그리고 아마도 사용해야 할 수도 있습니다). #! / bin / sh 스크립트는 어떤 쉘이든 상관없이 잘 작동해야합니다..
    • bash 특정 기능 (즉, 배열)을 사용하기 시작하면 특별히 bash를 요청해야합니다. / bin / sh 시스템에서 bash를 이미 호출 했으므로 다른 시스템에서는 bash가 실행되지 않으며 스크립트가 실행되지 않습니다. 물론 zsh 및 ksh에도 적용됩니다..
    • 스크립트가 개인적인 용도로만 사용되는 경우에도 일부 운영 체제가 / bin / sh 업그레이드 중. 예를 들어, 데비안에서는 bash로 사용되었지만, 나중에는 아주 작은 대쉬로 바뀌 었습니다. bashisms를 사용했지만 가지고 있던 스크립트 #! / bin / sh 갑자기 고장났다..

    하나:

    • 조차 #! / bin / bash 그게 정확하지 않습니다. 다른 시스템에서는 bash가 / usr / bin, / usr / pkg / bin, 또는 / usr / local / bin.
    • 더 신뢰할 수있는 옵션은 다음과 같습니다. #! / usr / bin / env bash, 사용하는 $ PATH. env 도구 자체가 엄격하게 보장되지는 않지만, / usr / bin / env 더 많은 시스템에서 작동합니다. / bin / bash ~하다.

    설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..

    이미지 크레디트 : Wikipedia