쉘 스크립트를 작성할 때 최대한 많은 이식성을 얻으려면 대상 시스템에 이미 설치되어 있는 명령줄 도구를 계속 사용하는 것이 좋습니다.
다음 예와 같이 특정 도구를 평가할 수 있습니다.
기본적으로 awk 없이 설치되는 Unix 버전이 있나요?
다음과 같이 대상 분포를 기준으로 검색할 수도 있습니다.
데비안에는 기본적으로 어떤 패키지가 설치되어 있나요? [...]
한 번에 하나의 명령/배포판을 검색하는 대신 승인되지 않은 경우 적어도 *nix 시스템에 설치될 가능성이 있는 공식 또는 어느 정도 확립된 명령 세트가 있습니까? 범위를 Linux로 좁히면 어떻게 될까요?
답변1
유닉스 또는 유닉스 계열이라고 합리적으로 부를 수 있는 모든 것은POSIX유용. 일반적으로 이러한 유틸리티가 존재하고 나열된 옵션을 지원하며 표시된 대로 작동한다고 가정할 수 있습니다. 몇 가지 제한 사항이 있습니다.
- 선택 사항으로 표시된 기능은 모든 지역에서 사용 가능하지 않을 수 있습니다.
- 최근 추가된 기능은 아직 모든 곳에 표시되지 않을 수 있습니다. '변경 내역' 섹션을 확인하세요.
- 소프트웨어에 오류가 있습니다. 특정 시스템은 일반적으로 일부 특수한 경우에 사양에서 벗어납니다. 때때로 개발자나 배포판 관리자는 사양에서 벗어나는 것에 신경 쓰지 않습니다. 경험 외에는 이를 알 수 있는 방법이 없습니다.
다음은 많은 Linux 배포판에서 발생할 수 있는 제한 사항입니다.
ed
pax
기본 설치에서는 종종 누락됩니다 .- 극단적인 작업 제어 사례는 ksh 외부에서 이상하게 동작하는 경향이 있습니다.
으로 제한하는 경우비임베디드 Linux, 몇 가지 추가 가정을 할 수 있습니다.
- 대부분의 배포판은 다음과 같습니다.파일 시스템 계층 표준, 이는 POSIX 외부의 많은 유틸리티를 사용해야 합니다.
- 배쉬를 사용할 수 있습니다. 그러나
/bin/sh
아마도 배쉬는 아닐 것입니다. - 대부분의 POSIX 유틸리티는GNU 핵심 도구구현하면 꽤 많은 확장 기능을 제공합니다.
- 유틸리티Linux사용할 수 있습니다(그러나 일부 유틸리티는 동일한 이름과 옵션이 다를 수 있는 유틸리티의 다른 구현으로 대체될 수 있음).
존재하다임베디드 리눅스, 쉘 및 유틸리티는 일반적으로 다음에서 제공됩니다.바쁜 상자. BusyBox는 소규모 시스템을 대상으로 하기 때문에 POSIX에서 요구하는 기능을 포함한 일부 기능을 의도적으로 생략합니다. BusyBox에는 많은 컴파일 시간 구성 옵션이 있으므로 특정 시스템에서 무엇을 사용할 수 있을지 실제로 예측할 수 없습니다. Embedded Linux의 이식성을 최대화하려면 유틸리티를 사용할 때 BusyBox에서 해당 소스 코드를 확인하고 조건부 컴파일 보호 옵션을 사용하지 마십시오. 설치에 유틸리티가 완전히 누락된 경우에는 도움이 되지 않습니다.