dash, ash 및 sh 스크립트가 100% 호환됩니까?

dash, ash 및 sh 스크립트가 100% 호환됩니까?

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

대시 또는 재에 대한 추가 기능이나 구문 변경 사항이 있습니까?

내가 아는 한 Ash는 sh의 직계 후손입니다.

답변1

간단히 대답하자면 '아니오'입니다. 100% 호환되지는 않습니다.

그러나 대부분의 쉘은 기본에 매우 가깝기 때문에 불일치가 거의 발생하지 않습니다. 실제로 대부분의 쉘은 추가된 구문 측면에서 거의 다르지 않지만 탭 완성 등과 같은 일부 추가 기능에서는 다릅니다.

그리고 정확하게 말하면 dashBSD의 후손인 Linux입니다. ash모두 의 자손이거나 다른 구현이어야 합니다 sh. 사실, 대부분의 시스템에서는 단지 sh심볼릭 링크나 다른 것에 대한 심볼릭 링크일 뿐입니다. 중요한 것은 POSIX 규정 준수입니다. 표준에 따라 스크립트를 작성할 때 문제가 발생하지 않습니다.bashdash

이 쉘의 차이점은 최적화와 성능입니다. 기능이 덜 풍부 bash하지만 완벽하게 합법적인 쉘입니다. Bash는 대화형 작업을 위한 풍부한 기능을 갖추고 있지만 더 많은 메모리를 사용합니다.

답변2

일부 시스템, 특히 데비안에서는/빈/재없는:

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

관련 정보