스크립트 파일을 실행하는 방법은 무엇입니까? [복사]

스크립트 파일을 실행하는 방법은 무엇입니까? [복사]

다음과 같은 스크립트 파일을 실행하는 것의 차이점은 무엇입니까?

sh myfile.sh

아니면 이거:

./myfile.sh

나는 그것들이 똑같은 것이라고 생각했지만 다음 예와 같이 때때로 그렇지 않다는 것을 알았습니다.

root@kali:~/Documents# sh sweep-ips.sh
ips range:
ping: 10.11.1.{0..24}: Name or service not known

root@kali:~/Documents# ./sweep-ips.sh 
ips range:
64 bytes from 10.11.1.5: icmp_seq=1 ttl=128 time=242 ms
64 bytes from 10.11.1.8: icmp_seq=1 ttl=64 time=249 ms
64 bytes from 10.11.1.22: icmp_seq=1 ttl=255 time=249 ms
64 bytes from 10.11.1.24: icmp_seq=1 ttl=64 time=241 ms

스크립트:

#!/bin/bash
echo "ips range"

for ip in 10.11.1.{0..24}
 do
   ping -c 1 ${ip} | grep "time=" 
 done

답변1

./script.sh스크립트는 바이너리와 동일한 방식으로 실행됩니다. #!바이너리가 아닌 스크립트인 경우 인터프리터를 선택하세요.

bash script.shbash스크립트를 실행하기 위해 인터프리터로 호출됩니다 .

둘 다 거의 동일해 보이지만 차이점이 있습니다.

한 가지 주요 차이점은 작동 script.sh하려면 실행 가능해야 한다는 것입니다 ./script.sh. 즉, 권한이 있는 파일은 644이런 방식으로 실행할 수 없습니다. 반면에 bash script.sh미리 정의된 인터프리터는 /bin/bash이미 실행 가능합니다. 따라서 권한이 있는 파일은 644이 방법을 사용할 수 있습니다.

관련 정보