쉘 스크립트가 Solaris에서 실행됩니까? 그렇지 않은 경우 호환되도록 만드는 가장 빠른 방법은 다음과 같습니다.

쉘 스크립트가 Solaris에서 실행됩니까? 그렇지 않은 경우 호환되도록 만드는 가장 빠른 방법은 다음과 같습니다.

나는 #!/bin/sh shebang을 사용하여 쉘 스크립트를 작성했습니다. 솔라리스에서는 작동하지 않는다고 들었습니다. Korn 쉘 스크립트를 작성해야 합니다.

그런데 스레드 중 하나에서 누군가가 상단의 shebang만 변경하면 변환이 가능하다고 언급했습니다. 이는 Solaris에서 sh가 위치한 다른 디렉토리를 가리킵니다.

이것이 사실인지 나는 알 길이 없으며, 당신이 나를 위해 그것을 명확히 해 주신다면 기쁠 것입니다.

이 접근 방식이 효과가 있을까요? 이것이 최선의 방법입니까?

답변1

스크립트가 이식 가능하다고 가정하면, 즉 bashisms, GNUisms 또는 POSIX가 아닌 것을 사용하지 않는다면 #!/bin/shshebang을 통해 대부분의 Unix 및 Linux 운영 체제에서 작동해야 합니다.

그러나 Solaris 10 및 이전 버전에는 /bin/shPOSIX 쉘이 없지만 POSIX보다 이전 버전이고 나중에 표준과 함께 제공되는 기능이 부족한 이전 Bourne 쉘이 있습니다.

스크립트를 그대로 두면 문제가 발생할 수 있지만 POSIX 호환 Solaris 셸을 가리키도록 shebang을 설정하면 이 문제를 쉽게 해결할 수 있습니다.

#!/usr/xpg4/bin/sh

기본 Solaris 유틸리티와 다른 경우 POSIX 호환 유틸리티를 선택하려면 스크립트 초기에 다음 줄도 추가해야 합니다.

PATH=$(getconf PATH):PATH

답변2

그래 네가 맞아.

Solaris와 Linux에서는 상황이 다르기 때문에 단일 스크립트를 작성해야 하는 경우 이 방법을 사용할 수 있습니다.

#!/usr/bin/env sh

< Your Code>

이것은 작동합니다.

리눅스에서.

$which sh
/bin/sh

솔라리스에서.

$which sh
/usr/bin/sh

단일 스크립트에서 이 경로를 피하려면 env다음 명령을 사용할 수 있습니다.

관련 정보