Info em '#!' (shebang, hashbang, crunchbang, etc.)

0

Eu tenho uma pergunta sobre a frase '#!' que aparece no topo de todos os arquivos python, a maioria dos arquivos bash e vários outros.

Já fiz uma pesquisa para esse termo no Google e neste site. Google apenas me encaminha para a documentação bash, e Super User me dá exatamente 0 resultados de pesquisa.

Então, aqui estão minhas perguntas:

  • Existe algum uso para a frase '#!' em qualquer parte de um arquivo executável interpretado além da linha superior, que mostra o intérprete primário para usar?

  • Em caso afirmativo, ele pode ser usado para alternar intérpretes no mesmo shell ou para outra coisa?

  • Existem outros tipos de comandos que podem ser enviados para o shell de interpretação como este?

por Mr. Minty Fresh 23.08.2015 / 20:39

2 respostas

1

O "hashbang", como é conhecido, só é útil quando aparece no início de um arquivo. Quando um arquivo é executado a partir de um shell * nix que inicia com esses dois bytes, o nome do caminho a seguir é chamado para interpretar o restante do arquivo. Isso permite que os scripts interpretados sejam tratados no mesmo nível que os executáveis binários compilados.

O shell passa o arquivo inteiro para o interpretador, e a outra razão para começar com # é que ele deixará a primeira linha ser tratada como um comentário pelo interpretador.

As respostas às suas outras perguntas são não - você não pode alternar os intérpretes no meio de um arquivo (a menos que você envie uma instrução diferente para o primeiro intérprete que faz isso), e não há outros "comandos" embutidos pode ser interpretado pelo shell ao tentar executar um arquivo de texto.

    
por 23.08.2015 / 20:59
0

É chamado de shebang. Os intérpretes a ignoram quando a linha começa com '#' e isso significa que é um comentário, mas para o sistema ele diz o que fazer com esse código na execução. O caminho depois do '#!' é o caminho do interpretador, e se você executar o código, ele abrirá o arquivo com o interpretador que você deu no shebang.

    
por 23.08.2015 / 20:57