En primer lugar, cualquier momento de ejecutar una secuencia de comandos utilizando el intérprete de forma explícita, como en
$ python ./my_script.py
$ ksh ~/bin/redouble.sh
$ lua5.1 /usr/local/bin/osbf3
la línea #!
siempre se ignora. La línea #!
es una característica Unix de los scripts ejecutables únicamente, y puede verla documentada en su totalidad en man page for execve(2)
. Allí encontrará que la palabra siguiente a #!
debe ser la ruta de acceso de un ejecutable válido. Así
#!/usr/bin/env python
ejecuta lo python
está en los usuarios $PATH
. Este formulario es resistente al intérprete de Python que se mueve, lo que lo hace algo más portátil, pero también significa que el usuario puede anular el intérprete estándar de Python al poner algo delante de él en $PATH
. Dependiendo de tus objetivos, este comportamiento puede o no estar bien.
A continuación,
#!/usr/bin/python
se refiere al caso común que un intérprete de Python se instala en /usr/bin
. Si está instalado en otro lugar, pierdes.Pero esta es una buena manera de asegurarse de que obtiene exactamente la versión que desee o bien nada en absoluto ("a prueba de parada" comportamiento), como en
#!/usr/bin/python2.5
Por último,
#!python
funciona sólo si hay un ejecutable python
en el directorio actual cuando se ejecuta el script. No recomendado.
ese encabezado se llama Shebang http://en.wikipedia.org/wiki/Shebang_%28Unix%29 – systempuntoout
FYI cuando ejecuta un script de la manera '$ python./My_script.py' (especificando' python' explícitamente), se ignora la línea shebang ('#!'). Solo tiene un efecto si ejecuta el script como un ejecutable, p. '$./my_script.py'. –
@David Zaslavsky: +1 Buena captura. –