quarta-feira, 9 de fevereiro de 2011

#!/usr/bin/python ou #!/usr/bin/env python?

4


    Quem utiliza o Linux como Sistema Operacional e programa em Python deve estar acostumado a colocar Shebangs em seus arquivos fonte.
    "Um Shebang 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". [1]
    Mas, se você já parou pra reparar, alguns programadores usam #!/usr/bin/python e outros, #!/usr/bin/env python. Qual dos dois está certo? Qual é a diferença entre eles?
    Quando utilizamos #!/usr/bin/python estamos especificando a localização do interpretador Python na máquina. O caminho está dizendo que o interpretador Python está dentro da pasta /usr/bin, que é onde geralmente ele está.
    Mas, imagine se você fosse executar seu script em uma máquina que o interpretador estivesse instalado em /bin? O seu script não iria funcionar pois o caminho para o interpretador é diferente.
    Quando utilizamos #!/usr/bin/env python estamos invocando o comando env [2] que procura o caminho do comando passado como argumento nas variáveis de ambiente para poder executá-lo. Ou seja, se o interpretador estiver em /usr/local/bin, /bin/, /usr/bin ou em qualquer outro caminho, o comando env irá encontrá-lo e executá-lo, não importa onde ele esteja.
    Sabendo disso, sempre que for criar scripts Python agora, lembre-se de usar o segundo comando pra não ter problemas futuros!
    Um abraço, pessoal!

Permalink

 
Design by ThemeShift | Bloggerized by Lasantha - Free Blogger Templates | Best Web Hosting