Propósito del shebang #!/usr/bin/python3

Resuelto KayleL asked hace 12 años • 7 respuestas

He notado esto en un par de lenguajes de programación, pero en este ejemplo estoy usando Python. En muchos tutoriales, comenzarían #!/usr/bin/python3en la primera línea. No entiendo por qué tenemos esto.

  • ¿No debería saber el sistema operativo que es un script de Python (obviamente está instalado ya que estás haciendo referencia a él)?
  • ¿Qué pasa si el usuario utiliza un sistema operativo que no está basado en Unix?
  • El idioma está instalado en una carpeta diferente por cualquier motivo.
  • El usuario tiene una versión diferente. Especialmente cuando no es un número de versión completo (como Python3 vs Python32)

En todo caso, podría ver que esto rompe el script de Python debido a las razones enumeradas anteriormente.

KayleL avatar Oct 06 '11 11:10 KayleL
Aceptado

#!/usr/bin/python3es una línea shebang .

Una línea shebang define dónde se encuentra el intérprete. En este caso, el python3intérprete se encuentra en /usr/bin/python3. Una línea shebang también podría ser un intérprete de , basho de cualquier otro lenguaje de programación, por ejemplo: .rubyperl#!/bin/bash

Sin la línea shebang, el sistema operativo no sabe que es un script de Python, incluso si configura el indicador de ejecución ( chmod +x script.py) en el script y lo ejecuta como ./script.py. Para que el script se ejecute de forma predeterminada en python3, invoquelo como python3 script.pyo establezca la línea shebang.

Puede utilizarlo #!/usr/bin/env python3para portabilidad entre diferentes sistemas en caso de que tengan el intérprete de idiomas instalado en diferentes ubicaciones.

Jin avatar Oct 06 '2011 04:10 Jin

Eso se llama hash-bang. Si ejecuta el script desde el shell, inspeccionará la primera línea para determinar qué programa debe iniciarse para interpretar el script.

Un sistema operativo que no esté basado en Unix utilizará sus propias reglas para descubrir cómo ejecutar el script. Windows, por ejemplo, utilizará la extensión del nombre del archivo y #hará que la primera línea se trate como un comentario.

Si la ruta al ejecutable de Python es incorrecta, entonces, naturalmente, el script fallará. Es fácil crear enlaces al ejecutable real desde cualquier ubicación especificada por convención estándar.

Mark Ransom avatar Oct 06 '2011 04:10 Mark Ransom