사람들이 를 입력하여 쉘 스크립트를 실행하는 것을 본 적이 있습니다 ./scriptname
. 지금은 이것이 기본 방식인 것 같습니다. 꽤 자주 보지만 가끔은 sh scriptname
. 그것은 단지 선호의 문제입니까, 아니면 둘 사이에 더 중요한 차이점이 있습니까?./그리고쉿?
답변1
몇 가지 차이점이 있습니다.
./scriptname
호출 파일이 scriptname
실행 가능해야 하며 첫 번째 줄("shebang"에서)로 지정된 셸을 사용해야 합니다.예를 들어 #!/bin/sh
),그렇다면.
sh scriptname
scriptname
호출되는 파일을 읽을 수 있는 한 작동하며 sh
스크립트의 shebang이 지정하는 것이 무엇이든 상관없이 사용됩니다. 일부 쉘의 경우, scriptname
현재 디렉토리에 존재하지 않으면 에 지정된 디렉토리가 검색되고 거기에서 발견된 첫 번째 디렉토리(있는 경우)가 읽고 해석됩니다.PATH
scriptname
다른 말로 하면,
sh scriptname
설정 없이 작동하지만 잘못된 쉘을 사용하고 있거나 잘못된 스크립트를 실행하고 있을 수 있습니다.
./scriptname
올바른 쉘(또는 적어도 스크립트 작성자가 지정한 쉘(있는 경우))을 사용하여 올바른 스크립트를 실행하려고 시도하지만 먼저 몇 가지 설정이 필요할 수 있습니다( chmod a+x scriptname
).