Em computação, um shebang (também chamado de sha-bang,[1][2] hashbang,[3][4] pound-bang,[5] ou hash-pling[6]) refere-se aos dois caracteres "#!", quando os mesmos são os primeiros caracteres de um arquivo de texto, especificamente em um código fonte escrito em uma linguagem interpretada. Em sistemas operacionais como o Unix, o sistema tenta executar o arquivo usando um interpretador especificado pelo shebang. Por exemplo, scripts compatíveis com o Bourne shell iniciam-se com o shebang:[7][8]

#!/bin/sh

Mais precisamente, uma linha shebang consiste de um cerquilha e um ponto de exclamação ("#!"), em seguida, opcionalmente, qualquer quantidade de espaços em branco, seguidos pelo endereço (absoluto) para o interpretador. Pelo fato do caractere "#" ser usado como marcador de comentários em muitas linguagens de script, o uso do shebang, na maioria dos casos, não interfere no funcionamento do código; alguns interpretadores de linguagens que não usam cerquilha para iniciar comentários (como Scheme) podem ignorar a linha do shebang, em reconhecimento do seu propósito em alguns sistemas.[9]

Portabilidade editar

O fato de shebangs terem de usar endereços absolutos pode causar problemas em sistemas que instalam os interpretadores em lugares diferentes. Por exemplo, o interpretador da linguagem Python pode estar em /usr/bin/python, /usr/local/bin/python, ou até em /home/usuário/bin/python se o usuário o instalou sem privilégios de administrador.

Uma solução para esse problema é adicionar um nível de indireção, como o env. No exemplo a seguir, o env busca pelo interpretador da linguagem Python, versão 3:

#!/usr/bin/env python3

Scripts que usam sintaxe específica do Bash não devem usar /bin/sh pelo fato de não ser compatível com o Bourne shell. No Ubuntu desde a versão 6.10, por exemplo, /bin/sh é uma ligação simbólica para /bin/dash, por motivos de desempenho.[10]

Referências

  1. «Advanced Bash Scripting Guide». Consultado em 19 de janeiro de 2012 
  2. Cooper, Mendel (5 de novembro de 2010). Advanced Bash Scripting Guide 5.3 Volume 1. [S.l.]: lulu.com. p. 5. ISBN 978-1-4357-5218-4 
  3. MacDonald, Matthew (2011). HTML5: The Missing Manual. Sebastopol, California: O'Reilly Media. p. 373. ISBN 978-1-4493-0239-9 
  4. Lutz, Mark (setembro de 2009). Learning Python 4th ed. [S.l.]: O'Reilly Media. p. 48. ISBN 978-0-596-15806-4 
  5. Lie Hetland, Magnus (4 de outubro de 2005). Beginning Python: From Novice to Professional. [S.l.]: Apress. p. 21. ISBN 978-1-59059-519-0 
  6. Schitka, John (24 de dezembro de 2002). Linux+ Guide to Linux Certification. [S.l.]: Course Technology. p. 353. ISBN 978-0-619-13004-6 
  7. «The #! magic, details about the shebang/hash-bang mechanism on various Unix flavours» (em inglês). Consultado em 5 de junho de 2010 
  8. «The Shebang Line: An Introduction to Porting Shell to Perl» (em inglês). Consultado em 5 de junho de 2010 
  9. «SRFI 22: Running Scheme Scripts on Unix» (em inglês). Consultado em 7 de junho de 2013 
  10. «Dash as /bin/sh». wiki.ubuntu.com. Consultado em 29 de outubro de 2017 

Ver também editar

  Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.