Seqüência de Shebang em um script

0

Vamos supor que a sequência shebang esteja incluída em um script gravado em um arquivo separado; por exemplo, eu crio um arquivo de script example.sh .

Se eu adicionar a sequência shebang no arquivo:

 #!/bin/sh

Como posso ter certeza de que o comando acima não está sendo reconhecido como um comentário (no script do Linux Bash, # é frequentemente considerado como o início de um comentário.

    
por Linuxn00b 03.10.2015 / 22:59

3 respostas

5

Uma shebang só é realmente um shebang se o script for executável e "#!" são os dois primeiros caracteres do arquivo.

O sistema operacional está literalmente procurando no arquivo a verificação dos dois primeiros bytes e vendo que eles são (em hexadecimal) "23" e "21", que são os códigos ASCII para "#" e "!".

Se eles aparecerem mais tarde no arquivo, ou se você não estiver executando o arquivo diretamente, a linha será realmente tratada como um comentário porque começa com #.

De fato, se a linha for:

#!/bin/sh

, o SO encontra a shebang e, portanto, é executado:

/bin/sh [filename]

e /bin/sh ignoram a linha shebang como comentário ao executar o script.

Quando se trata de outros idiomas que não usam # como um comentário, um sinalizador especial é frequentemente passado para o intérprete para que ele saiba ignorar a primeira linha (por exemplo, #!/usr/local/bin/tcc -run ).

    
por 03.10.2015 / 23:20
1

O shell original não tinha esse recurso, mas teve comentários. Um mecanismo era necessário, para que um usuário pudesse especificar qual shell / interpretador usar. Esse mecanismo não deve quebrar desnecessariamente os sistemas antigos (qualquer novo script escrito para o shell original deve ter permissão para especificar o shell original e não deve quebrar em sistemas antigos (executando versões anteriores do shell original) que não conhecem esse novo Portanto, ele deve se parecer com um comentário para o shell original.Este novo sistema também deve reduzir o risco de disparos falsos, sem sobrecarregar os usuários futuros.

Por isso, decidiu-se adicionar um comentário especial no início do arquivo.

    
por 04.10.2015 / 00:50
0

Este é um mecanismo que foi introduzido no shell do UNIX por Denis Ritchie, então o shell do Linux herda esse recurso. É no próprio shell que a primeira linha é verificada para essa "sequência mágica" e que usa o interpretador especificado após o shebang, se for encontrado. O email em que esse recurso foi mencionado pela primeira vez é citado em algum código-fonte bsd4.0, você pode vê-lo aqui: link

    
por 03.10.2015 / 23:16

Tags