Como executar um arquivo de script? [duplicado]

0

Qual é a diferença entre executar um arquivo de script como este:

sh myfile.sh

Ou isto:

./myfile.sh

Eu pensei que eles são a mesma coisa, mas percebi que às vezes eles não são, como visto abaixo exemplo:

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

script:

#!/bin/bash
echo "ips range"

for ip in 10.11.1.{0..24}
 do
   ping -c 1 ${ip} | grep "time=" 
 done
    
por Spring 05.12.2017 / 19:43

1 resposta

1

./script.sh está executando um script da mesma forma que executamos um arquivo binário. O interpretador é escolhido de #! no caso de ser um script e não um binário.

bash script.sh invoca bash como intérprete para executar o script.

Ambos parecem quase iguais, mas existem diferenças.

Uma grande diferença é que script.sh deve ser executável para que ./script.sh funcione. Esse é um arquivo com 644 , a permissão não pode ser executada dessa maneira. Por outro lado, para bash script.sh , o interpretador pré-definido /bin/bash já é executável. Portanto, um arquivo com 644 permission funciona com esse método.

    
por 05.12.2017 / 23:25