쉘 스크립트에서 #! / bin / sh 대신 #! / bin / bash를 사용하는 것이 더 좋은 경우는 언제입니까?

0
619

빈-대시 -sh-in-a-shell-script-00에서 빈 상태로 사용하기

새로운 쉘 스크립트를 만들 때, 가능한 한 문제가 없는지 확인하고 싶을 때가 있지만, 어떤 shebang이 가장 적합한 지 아는 것은 때때로 혼란 스러울 수 있습니다. 참고로 오늘의 슈퍼 유저 Q & A 게시물에는 혼란스런 독자의 질문에 대한 답변이 있습니다.

오늘의 질문 및 답변 세션은 커뮤니티 중심의 Q & A 웹 사이트 그룹 인 Stack Exchange의 하위 부문 인 SuperUser에 의해 제공됩니다.

질문

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

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

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

대답

수퍼 유저 기고자 grawity는 다음과 같은 답을 제공합니다.

한마디로 :

  • POSIX sh 스펙의 상위 세트를 구현하는 여러 쉘이 있습니다. 다른 시스템에서는 / bin / sh ash, bash, dash, ksh, zsh 등에 대한 링크 일 수 있습니다. csh 또는 피쉬는 항상 sh 호환 가능합니다.
  • sh 기능만을 고수하는 한 사용할 수 있습니다. #! / bin / sh 스크립트는 어떤 쉘이든 관계없이 잘 작동합니다.
  • bash 특정 기능 (예 : 배열)을 사용하기 시작하면 bash를 요청해야합니다. / bin / sh 이미 시스템에서 bash를 호출하고 다른 시스템에서는 그렇지 않을 수 있으며 스크립트는 실행되지 않습니다. 물론 zsh와 ksh에도 동일하게 적용됩니다.
  • 스크립트가 개인 용도로만 사용되는 경우에도 일부 운영 체제가 변경 될 수 있습니다. / bin / sh 업그레이드 중. 예를 들어, 데비안에서는 bash로 사용되었지만 나중에 매우 작은 대시로 대체되었습니다. bashism을 사용했지만 가지고 있던 스크립트 #! / 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