dash, ash 및 sh 스크립트는 100 % 호환 되나요?

dash, ash, sh 용으로 작성된 스크립트가 100 % 호환되는지 알고 싶었습니다.

추가 된 기능이 있습니까? 대시 또는 애쉬 또는 구문 변경?

내가들은 바에 따르면 애쉬는 sh의 직계 자손입니다.

댓글

  • ash는 스트라이프 다운 형태의 bash입니다.
  • Source? 나는 ash가 bash와 관련이 있다는 말을 전혀 보지 못했습니다.
  • 사람들이 모든 종류의 셸을 만드는 대신 bash에 패치를 제출하지 않는 이유는 무엇입니까? 항상. 정말로 알고 싶다면 설명서를 읽으십시오. 예를 들어 man ash
  • 정답입니다. ' 세게 때리다. 이것이 ' sh (원래 Bourne 셸)의 자손이라고 말하는 것이 더 정확하지만 '도 완전히 정확하지 않습니다. .
  • checkbashisms 유틸리티를 사용하여 스크립트가 POSIX와 호환되는지 테스트 할 수 있습니다.

답변

짧은 대답은 아니오입니다. “100 % 호환되지 않습니다.

그러나 대부분의 셸은 기본에 매우 가깝기 때문에 불일치가 거의 발생하지 않습니다. 사실, 대부분의 셸은 추가 된 구문에 따라 크게 다르지 않지만 탭 완성 및 유사한 일부 추가 기능에 따라 다릅니다.

또한 dash

— 또는 BSD에서 Linux 로의 포팅 (정확히 말하면). 그리고 모두 . 실제로 sh는 대부분의 시스템에서 bash, dash 또는 다른 것에 대한 심볼릭 링크입니다. 중요한 것은 POSIX 준수 —이며 표준에 따라 스크립트를 작성할 때 문제가 발생하지 않습니다.

이러한 쉘의 차이점은 최적화에 있습니다. bash보다 기능이 덜 풍부하지만 완전히 합법적 인 셸입니다. Bash는 대화 형 작업에는 기능이 풍부하지만 예를 들어 더 많은 메모리를 사용합니다.

댓글

  • 하지만 스크립트 사용의 경우 호환됩니까?
  • 그리고 POSIX 준수에 대해, 내가 그 표준을 따르더라도, Bash 용으로 스크립트가 작성 되었다면 그것이 sh 또는 그 자손에서 실행될 것이라고 생각하지 않습니다
  • 그들은 호환되어야합니다 모호한 기능을 사용하지 않는 경우 ' 서로 그러나 bash 스크립트를 사용하면 더 많은 문제가 발생할 수 있습니다.
  • sh, ash 또는 dash와 함께 bash를 사용하려는 의도는 없습니다. 이러한 모호한 기능은 무엇입니까?
  • bash '의 최신 기능 중 다수는 POSIX에 추가 된 것이므로 다음과 같은 경우 이식 불가능한 코드를 작성할 가능성이 점점 더 높아집니다. ' 사용 중입니다. IIRC는 [[]] 구조도 sh에 없습니다. 또한 ' 순수한 쉘 스크립트를 작성하지 않는 경우 도구의 차이도 작용합니다 (sed, grep, awk의 다른 버전).

li>

답변

일부 시스템, 특히 데비안에서는 / bin / ash 을 사용할 수 없습니다.

$ type ash dash bash: type: ash: not found dash is /bin/dash 

댓글

  • busybox ash가있을 수 있습니다.
  • 즉, ' bash도없는 시스템이 많이 있습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다