次のスクリプトファイルを実行することの違いは何ですか?
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.sh
bash
スクリプトを実行するためにインタプリタとして呼び出されます。
どちらもほぼ同じように見えますが、違いがあります。
1つの主な違いは、機能するscript.sh
には実行可能でなければならないことです./script.sh
。つまり、権限のあるファイルは644
この方法で実行できません。一方、bash script.sh
事前定義されたインタプリタは/bin/bash
すでに実行可能です。したがって、権限を持つファイルは644
この方法を使用できます。