쉘 스크립트가 현재 쉘과 다른 쉘에 작성되었습니다.

쉘 스크립트가 현재 쉘과 다른 쉘에 작성되었습니다.

쉘 스크립트가 다음과 같은 경우

#!/bin/sh

하지만 내 $SHELL의 가치는 ksh입니다.

ksh를 sh로 변경한 다음 스크립트를 실행하면 어떤 차이가 있습니까? 즉. 스크립트가 실행되는 셸 유형에 따라 다르게 동작하는지 여부입니다.

답변1

스크립트가 실행되는 셸 유형에 따라 다르게 동작하는지 여부입니다.

  • 어떤 의미에서는 bash script.sh다르게 ksh script.sh행동할 수도 있습니다. 그렇습니다. 일반적으로 차이점은 하나는 작동하고 하나는 오류가 발생하지만 다양한 옵션이 있다는 것입니다. 많은 간단한 스크립트는 일반 쉘에서 동일한 동작을 갖지만 더 복잡한 스크립트는 다른 쉘에서 제공하는 언어 간의 많은 차이점 중 하나에 직면할 수 있습니다.

  • 스크립트는 귀하의 값에 따라 다르게 작동합니까 SHELL? 스크립트가 $SHELL직접 또는 간접적으로 자신을 호출하거나 테스트하거나 해당 값을 사용하는 경우에만 해당됩니다. 일반 쉘 스크립트는 일반적으로 그렇지 않지만 가능합니다.

  • 스크립트는 호출된 상위 셸에 따라 다르게 동작합니까? 극히 드물다. 스크립트는 이를 감지하기 위해 꽤 많은 작업을 수행해야 하므로 거의 의도적이어야 한다.


생각하다귀하의 사용 사례는 대화형 셸(예: ) ./script.sh에서 실행 되고 있습니다 . 이것이 맞다면 위의 마지막 사례에 속하며 스크립트는 귀하가 직접 사용하는 다른 셸과 거의 동일한 방식으로 실행될 것입니다. 시스템은 항상 새로운 프로세스를 만들고 스크립트를 실행하라고 지시합니다.shksh/bin/sh

답변2

아니요, 아무런 차이가 없습니다. #!/usr/bin/sh" /usr/bin/sh이 스크립트를 해석하기 위한 것이므로 귀하의 값은 $SHELL아무런 차이가 없습니다.

관련 정보