Dê uma olhada aqui Wikipedia / Shebang .
o que significa #! / bin / bash na primeira linha? É apenas um comentário e ignorado pelo shell como todos os outros comentários no programa
OR
Somente esta linha é interpretada pelo intérprete e todas as outras linhas iniciadas pelo # são ignoradas, exceto #! / bin / bash.
Dê uma olhada aqui Wikipedia / Shebang .
A primeira linha informa ao computador qual interpretador deve ser usado durante a execução do arquivo
Digamos que você escreva um script usando python e, enquanto estiver executando esse script, você usará o interpretador python e como o computador saberá qual interpretador usar, ele saberá através dessa linha, que também é chamada de Shebang , para python
#!/usr/bin/env python
print "Hello world"
digamos que você escreva um script no bash e use o shebang para o script bash que diz ao computador para usar o intérprete bash enquanto executa este código
#!/usr/bin/bash
echo "Hello world"
Essa primeira linha começando com #!
é (no Linux) interpretada pelo kernel Linux dentro da implementação de execve(2) chamada de sistema (que é invocada, depois de fork
, pelo seu shell para a maioria dos comandos - aqueles que não são funções e não integrações de shell).
Você pode mencionar o caminho absoluto de outros executáveis (como /usr/bin/env
, consulte env ( 1) ). Como um exemplo bobo, tente criar um script contendo a única linha #!/bin/cat /proc/self/maps
e, em seguida, torne o script legível e executável (com chmod a+rx
) e, em seguida, execute-o.
A execve
specification do POSIX não menciona nenhuma shebang processamento específico, mas todos os sistemas semelhantes ao Unix em que trabalhei (Linux, SunOS, HPUX, AIX, ...) processaram especificamente em execve
O intérprete bash
está ignorando essa linha, como qualquer outra linha que comece com #
, como um comentário.
Veja também binfmt_misc (específico do Linux).
Força o script a ser executado usando o shell bash, em vez do shell atual que está sendo usado.
Tags shell shell-script