No sinal depois de shebang?


26

No script "support / apxs.in" do projeto Apache httpd , um texto é cercado por @sinais #!. Ou seja, a primeira linha do script é:

#!@perlbin@ -w

Isso é uma coisa do Perl ou do kernel do UNIX? Em outras palavras, é possível executar esse script usando path/to/script/script_name.in?

Caso contrário, qual é o motivo para iniciar o script com a #!?


8
Esses são .inarquivos (ou seja templates)
don_crissti

2
Como uma observação lateral, @é bom em nomes de arquivos, portanto, se você tiver um executável chamado @perlbin@que aceite a -wopção e possa interpretar o conteúdo desse arquivo, sim, poderá executá-lo.
Bakuriu 3/02

@ Bakuriu: "Válido", sim. "Bem"? Duvidoso.
Lightness Races com Monica

Respostas:


47

Parece um espaço reservado em um modelo GNU Automake que será preenchido por um configurescript. Portanto, não é uma coisa do kernel Perl ou Unix, mas uma coisa do GNU autotools.

Provavelmente é de um arquivo em uma distribuição de origem, não de um arquivo que foi instalado no sistema por meio de make installou por um gerenciador de pacotes.

Como alternativa, é de uma construção quebrada com as ferramentas automáticas do GNU que nunca foram definidas perlbincorretamente.

O fato de o arquivo ter um .insufixo confirma que ele deve ser processado configure.

Não, você não pode executar este arquivo como está. O espaço reservado será substituído pelo caminho apropriado para o perlexecutável quando você executar configure.


Sim, o link na pergunta leva a um repositório de código-fonte.
Lightness Races com Monica

@LightnessRacesinOrbit Sabe, eu nem vi que havia um link lá.
Kusalananda

1
Hehe, pensei que poderia ter sido o caso. Sugeri uma edição que corrige alguns problemas com ele, este é um deles :)
Leveza raças com Monica

1
Parece um problema com o estilo do Unix.SE - a cor do link não é muito distinta da cor normal do texto.
Barmar

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.