É uma maneira de definir qual shell deve ser invocado durante a execução do script. É chamado de Shebang .
Exemplo, um arquivo com a seguinte linha Shebang:
#!/bin/sh
invocaria o shell Bourne (sh). Então, por exemplo, seu roteiro:
## Setting a default route
#!/bin/sh
/sbin/route add SUBNET $5
faria com que /sbin/route add SUBNET $5
fosse executado no interpretador do shell Bourne. /sbin/route add SUBNET $5
é apenas um comentário e não faz nada. No entanto, o shebang deve estar na primeira linha, portanto, esse comentário no topo não permitirá que o shebang faça seu trabalho, tornando-o uma adição inútil.
Há um número de intérpretes que são amplamente utilizados e alguns intérpretes típicos para as linhas shebang são:
-
#!/bin/sh
- Execute usando sh, o shell Bourne (ou um shell compatível) -
#!/bin/csh
- Executa usando csh, o shell C (ou um shell compatível) -
#!/usr/bin/perl
- Executar usando Perl -
#!/usr/bin/python
- Execute usando Python -
#!/usr/bin/php
- Executar usando o interpretador de linha de comando do PHP
Como Olli mencionou em seus comentários, algumas vezes env
(abreviação de ambiente) é usado para garantir que caminho para o intérprete é escolhido.