쉘 스크립트를 가능한 한 이식 가능하게 만드는 방법(POSIX 및 비 POSIX)

쉘 스크립트를 가능한 한 이식 가능하게 만드는 방법(POSIX 및 비 POSIX)

상황: 여러 셸에서 작업을 수행하는 셸 스크립트 작성

문제: Bourne 호환 셸 스크립트( bash, ksh, ash, zsh등)는 쉽게 이식 가능하지만(스크립트가 호환되고 다른 Bourne 호환 셸에서 실행되어야 하는지 확인하세요 ) 다음과 같은 shPOSIX 호환 셸 스크립트는 아닙니다. . 구문 오류(예상)로 인해 이러한 셸에서 실행되면 스크립트가 즉시 실패합니다.cshfish

질문: 개별 쉘의 POSIX 호환성에 관계없이 모든 쉘에서 실행될 수 있는 스크립트를 작성하는 방법이 있습니까? 구문 오류를 발생시키고 스크립트 자체를 종료시키지 않고 이 작업을 수행할 수 있는 방법은 생각할 수 없습니다.

답변1

간단하다: 쓰기오직을 위한 /bin/sh. 그건보장하다(POSIX에 따라, 또한 전통에 따라) 존재합니다. 다른 껍질은 표면적으로 유사할 수도 있고 완전히 다를 수도 있습니다. 예를 들어 확인하십시오.껍질, (얇은) ​​후드 아래의 Perl 쉘, 또는구성표 쉘, LISPish 구문이 많이 사용됩니다.

Unix의 장점 중 하나는 쉘이 표준 사용자 수준 프로그램이라는 것입니다. 그러나 이는 모든 해커가 자신만의 미친 변형을 작성할 수 있음을 의미합니다. 모든 껍질 사이에 모호한 교차점을 작성하려는 시도는 실패할 운명입니다. 모든 "공통 껍질"에 대해 글을 쓴다는 것은 "공통"이 무엇을 의미하는지 정의하는 것을 의미합니다. 이는 누군가를 화나게 할 것입니다.

관련 정보