쉘 스크립트를 호출할 때 sh와 ./의 차이점은 무엇입니까? [복사]

쉘 스크립트를 호출할 때 sh와 ./의 차이점은 무엇입니까? [복사]

사람들이 를 입력하여 쉘 스크립트를 실행하는 것을 본 적이 있습니다 ./scriptname. 지금은 이것이 기본 방식인 것 같습니다. 꽤 자주 보지만 가끔은 sh scriptname. 그것은 단지 선호의 문제입니까, 아니면 둘 사이에 더 중요한 차이점이 있습니까?./그리고?

답변1

몇 가지 차이점이 있습니다.

./scriptname

호출 파일이 scriptname실행 가능해야 하며 첫 번째 줄("shebang"에서)로 지정된 셸을 사용해야 합니다.예를 들어 #!/bin/sh),그렇다면.

sh scriptname

scriptname호출되는 파일을 읽을 수 있는 한 작동하며 sh스크립트의 shebang이 지정하는 것이 무엇이든 상관없이 사용됩니다. 일부 쉘의 경우, scriptname현재 디렉토리에 존재하지 않으면 에 지정된 디렉토리가 검색되고 거기에서 발견된 첫 번째 디렉토리(있는 경우)가 읽고 해석됩니다.PATHscriptname

다른 말로 하면,

sh scriptname

설정 없이 작동하지만 잘못된 쉘을 사용하고 있거나 잘못된 스크립트를 실행하고 있을 수 있습니다.

./scriptname

올바른 쉘(또는 적어도 스크립트 작성자가 지정한 쉘(있는 경우))을 사용하여 올바른 스크립트를 실행하려고 시도하지만 먼저 몇 가지 설정이 필요할 수 있습니다( chmod a+x scriptname).

관련 정보