É permitido espaço entre #! e / bin / bash em shebang?

48

Em um shebang, um espaço ou mais é permitido entre #!e o intérprete?

Por exemplo #! /bin/bash,. Parece funcionar, mas alguns disseram que está incorreto.

Tim
fonte
Então, um espaço não é necessário ? Eu sempre vi pelo menos um ...
Bakuriu
6
@Bakuriu Where? Eu quase não vi um ...
Jens

Respostas:

48

Sim, isso é permitido.

O artigo da Wikipedia sobre o shebang inclui um email de 1980 de Dennis Ritchie, quando ele estava introduzindo o suporte ao kernel para o shebang (como parte de um pacote mais amplo chamado diretivas de intérpretes ) na Versão 8 Unix (ênfase minha):

O sistema foi alterado para que, se um arquivo sendo executado comece com os caracteres mágicos #!, o restante da linha seja entendido como o nome de um intérprete para o arquivo executado. [...]

Para aproveitar essa maravilhosa oportunidade, coloque

#! /bin/sh

na margem esquerda da primeira linha de seus scripts de shell. Os espaços em branco depois !estão OK.

Portanto, os espaços após o shebang já existem há um bom tempo e, de fato, o exemplo de Dennis Ritchie está usando-os.

Observe que as versões anteriores do Unix tinham um limite de 16 caracteres nessa linha de intérpretes, então você não podia ter uma quantidade arbitrária de espaço em branco lá. Essa restrição não se aplica mais aos kernels modernos.

alexwlchan
fonte
38

Sim, espaços em branco são permitidos após o #!. Havia até um pensamento (equivocado) de que alguns sistemas poderiam exigir isso, mas sempre foi opcional.

Para ler mais, tente aqui

Eric Renouf
fonte