Quando você executa qualquer script passando o nome do arquivo para o programa do interpretador de scripts, você está executando o programa do interpretador com o script como um argumento passado para ele. Por exemplo, isso seria parecido com o processo 'sh' com o argumento 'filename.sh'. O interpretador sh
está abrindo o arquivo.
Por outro lado, se você executar o script em si, o sistema chamará o programa do interpretador especificado e alimentará o conteúdo dos scripts. Neste caso, o processo se parece com 'filename.sh' sem argumentos.
Você deve se certificar de ter uma linha de destaque:
#!/bin/bash
# bash script here
Uma linha bang é a primeira linha no script e começa com os mesmos dois caracteres #!
, são eles que o sistema lê quando tenta executar o script e depois o sistema passa o script para o programa imediatamente depois. Note que esta linha não tem nada a ver com bash e funciona tão bem para python e perl, apesar de serem linguagens muito diferentes. Você usaria #!/usr/bin/python
por exemplo e depois seguiria com código python.
Depois de ter seu script, verifique se você definiu as permissões de execução:
chmod a+x filename.sh
Depois, você pode executar o script como seu próprio processo:
./filename.sh
Ou coloque o arquivo em um local conhecido com um nome de programa legal, como /usr/sbin
e execute em qualquer lugar:
sudo cp filename.sh /usr/sbin/program-name
program-name
E esse é realmente o benefício prático de usar a linha bang com as permissões certas - é tudo sobre implantação . É muito difícil conseguir que os usuários executem um script se tiverem que lembrar qual programa executar o script. Lembre-se de dar um caminho completo para o script toda vez que quiser executá-lo. Onde colocar em /usr/local/bin
, por exemplo, e torná-lo executável, pode economizar muita dor para as pessoas que tentam usar seu script. Esses programas ficam disponíveis para todos os usuários no seu computador.
Também é bom para identificação. Se você entrar no programa top
, um script executado sem a linha bang terá apenas o nome do interpretador, ou seja, bash
, perl
ou python
. Mas se um script for executado com as permissões corretas, o nome do script será exibido.
Nota: Se você deseja distribuir um script acessível a todos, crie uma página man e um pacote deb para instalá-lo. Precisamos reduzir o número de scripts aleatórios on-line e aumentar o número de debs que podem ser desinstalados.