쉘 스크립트가 다음과 같은 경우
#!/bin/sh
하지만 내 $SHELL의 가치는 ksh입니다.
ksh를 sh로 변경한 다음 스크립트를 실행하면 어떤 차이가 있습니까? 즉. 스크립트가 실행되는 셸 유형에 따라 다르게 동작하는지 여부입니다.
답변1
스크립트가 실행되는 셸 유형에 따라 다르게 동작하는지 여부입니다.
어떤 의미에서는
bash script.sh
다르게ksh script.sh
행동할 수도 있습니다. 그렇습니다. 일반적으로 차이점은 하나는 작동하고 하나는 오류가 발생하지만 다양한 옵션이 있다는 것입니다. 많은 간단한 스크립트는 일반 쉘에서 동일한 동작을 갖지만 더 복잡한 스크립트는 다른 쉘에서 제공하는 언어 간의 많은 차이점 중 하나에 직면할 수 있습니다.스크립트는 귀하의 값에 따라 다르게 작동합니까
SHELL
? 스크립트가$SHELL
직접 또는 간접적으로 자신을 호출하거나 테스트하거나 해당 값을 사용하는 경우에만 해당됩니다. 일반 쉘 스크립트는 일반적으로 그렇지 않지만 가능합니다.스크립트는 호출된 상위 셸에 따라 다르게 동작합니까? 극히 드물다. 스크립트는 이를 감지하기 위해 꽤 많은 작업을 수행해야 하므로 거의 의도적이어야 한다.
나생각하다귀하의 사용 사례는 대화형 셸(예: ) ./script.sh
에서 실행 되고 있습니다 . 이것이 맞다면 위의 마지막 사례에 속하며 스크립트는 귀하가 직접 사용하는 다른 셸과 거의 동일한 방식으로 실행될 것입니다. 시스템은 항상 새로운 프로세스를 만들고 스크립트를 실행하라고 지시합니다.sh
ksh
/bin/sh
답변2
아니요, 아무런 차이가 없습니다. #!/usr/bin/sh
" /usr/bin/sh
이 스크립트를 해석하기 위한 것이므로 귀하의 값은 $SHELL
아무런 차이가 없습니다.