대시, 애쉬 및 sh 스크립트는 100 % 호환됩니까?


16

대시, 애쉬 및 sh로 작성된 스크립트가 100 % 호환되는지 알고 싶습니까?

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

내가 들었던 것에서, 재는 sh의 직계 후손이다.


재는 줄무늬 형태의 bash입니다
Joe

4
출처? 그 재가 bash는 관련이 말했다 I 톱 아무것도
user1115057

사람들이 모든 종류의 껍질을 만드는 대신 bash에 패치를 제출하지 않는 이유는 무엇입니까? 정말로 알고 싶다면 설명서를 읽으십시오. 예 :man ash
데이지

2
bash의 자손이 아닙니다. 그것들이 sh (원래 Bourne 쉘)의 자손이라고 말하는 것이 더 정확하지만, 그 어느 것도 정확하지 않습니다.
Zlatko

이 유틸리티 checkbashisms를 사용 하여 스크립트가 POSIX 호환인지 테스트 할 수 있습니다 .
donothingsuccessfully

답변:


18

짧은 대답은 아니요, 100 % 호환되지 않습니다.

그러나 대부분의 쉘은 기본에 거의 가깝기 때문에 불일치에 거의 부딪치지 않습니다. 실제로, 대부분의 쉘은 추가 된 구문이 아니라 탭 완성과 같은 추가 기능에 의해 크게 다릅니다.

또한, BSD에서 Linux 로의 포트 또는 포트 dash의 후손입니다 ash. 그리고 그들 모두는 자손이거나 다른 구현이어야합니다 sh. 실제로, sh대부분의 시스템에서bash , dash또는 뭔가 다른. 중요한 것은 POSIX 준수입니다. 표준에 따라 스크립트를 작성할 때 문제가 발생하지 않습니다.

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


그러나 스크립트 사용의 경우 호환됩니까?
user1115057

스크립트가 배쉬를 위해 작성되는 경우 POSIX 호환에 대해, 나는 그 표준을 따르더라도, 나는 어떤 sh 또는 그 자손에서 실행됩니다 같아요
user1115057

모호한 기능을 사용하지 않는 경우 서로 호환 가능해야합니다. 그러나 bash 스크립트를 사용하면 더 많은 문제가 발생할 수 있습니다.
Zlatko

sh 또는 ash 또는 dash와 함께 bash를 사용하지 마십시오. 그 모호한 기능은 무엇입니까?
user1115057

1
bash의 최신 기능 중 다수는 POSIX에 추가 된 기능이므로 이식 할 수없는 코드를 사용하는 경우가 많습니다. IIRC조차 [[]] 구문이 sh에 없습니다. 또한 순수한 쉘 스크립트를 작성하지 않으면 도구의 차이가 발생합니다 (sed, grep, awk의 다른 버전).
lynxlynxlynx

1

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

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

2
비지 박스 재가있을 수 있습니다.
muru December
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.