スクリプトファイルを実行するには? [コピー]

スクリプトファイルを実行するには? [コピー]

次のスクリプトファイルを実行することの違いは何ですか?

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スクリプトを実行するためにインタプリタとして呼び出されます。

どちらもほぼ同じように見えますが、違いがあります。

1つの主な違いは、機能するscript.shには実行可能でなければならないことです./script.sh。つまり、権限のあるファイルは644この方法で実行できません。一方、bash script.sh事前定義されたインタプリタは/bin/bashすでに実行可能です。したがって、権限を持つファイルは644この方法を使用できます。

おすすめ記事