Ir al contenido
Contenido del curso

Uso de env en shebang

Un shebang con env permite que el sistema local busque el intérprete de Python en el PATH, en lugar de fijar una ruta absoluta. Esto hace los scripts más portables entre distintas distribuciones y entornos donde Python puede estar en lugares diferentes. A continuación se explica cómo usarlo y cómo dar permisos para lanzar el archivo directamente en Unix.


Qué es Shebang?

El shebang es la primera línea de un script que indica qué intérprete debe utilizarse para ejecutar el archivo. Por ejemplo, #! /usr/bin/env python3 le dice al sistema que use Python 3 desde el entorno de usuario.


Ventajas de env

Usar env en el shebang ofrece varias ventajas:

  • Portabilidad: El script puede funcionar en diferentes entornos y distribuciones.
  • Flexibilidad: Permite que cualquier versión de Python disponible en el PATH se pueda utilizar.


Ejecutar scripts

Para ejecutar un script directamente en Unix:

  1. Asegúrate de tener permisos de ejecución con el comando chmod +x nombre_del_script.py.
  2. Llama al script directamente usando ./nombre_del_script.py. Esto hace que la ejecución sea más sencilla.


usr/usr/bin

/usr/bin/env ejecuta la primera coincidencia del intérprete que encuentre en la variable PATH. Es útil cuando la ruta al intérprete no es siempre /usr/bin/python, o cuando quieres forzar Python 3 escribiendo /usr/bin/env python3.


Pasos prácticos

  1. Crear el archivo: guardar el contenido anterior en hola.py.
  2. Dar permiso de ejecución: desde la terminal ejecutar chmod +x hola.py. Este comando añade el permiso de ejecución al fichero, de modo que el sistema pueda tratarlo como un programa ejecutable. A continuación se puede lanzar directamente con: ./hola.py.


Diferencias al ejecutar

  • Si llamas ./hola.py, el kernel lee la primera línea shebang y usa el intérprete indicado por env.
  • Si llamas python hola.py, la orden la ejecuta el intérprete python que invoques en la terminal, y la primera línea del archivo se ignora desde el punto de vista del intérprete.


Caveats y buenas prácticas

  • Si el proyecto requiere Python 3, usar /usr/bin/env python3 para evitar que una instalación por defecto de Python 2 se ejecute por error.
  • Asegurarse de que el archivo tenga finales de línea tipo Unix (LF). Si tiene CRLF, el shebang puede fallar al arrancar en sistemas Unix.
  • env selecciona el primer intérprete en PATH. Si el PATH del usuario apunta a un intérprete distinto del esperado, la ejecución usará ese intérprete, así que comprobar el entorno es buena práctica.


Simulador Interactivo: El misterio del Shebang y el PATH

Configura las propiedades de tu script de Python y lánzalo en la terminal de Linux/macOS. ¡Observa cómo reacciona el sistema según los permisos y el entorno!

1. Configura el archivo script.py

-rw-r--r-- (No ejecutable)
Vista previa del archivo
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print("¡Hola desde el script portable de Python!")
Fin de línea: LF (\n)

2. Consola de comandos (Acciones)

TERMINAL UNIX SIMULADA (Ubuntu 24.04 / macOS) PATH active: /usr/local/bin:/usr/bin:/bin
alumno@python-helper:~$ # Configura las opciones de arriba y ejecuta un comando...
Explicación del Diseñador: El kernel lee los primeros bytes (número mágico 0x23 0x21 = #!). Si usas /usr/bin/env, delegas al sistema operativo la tarea de buscar el binario de Python dentro de la variable de entorno PATH del usuario actual.

No se permite comentar en este curso.