Xonsh: shell multiplataforma, con tecnología Python y mirada Unix
Una shell impulsada por Python llamada Xonsh está provocando un debate sobre si las shells modernas y ricas en funciones pueden reemplazar de forma realista a opciones ubicuas como Bash y Zsh. Sus defensores elogian su capacidad para mezclar Python con comandos tradicionales de shell, escribir scripts más mantenibles y funcionar de forma multiplataforma (especialmente en Windows), mientras que sus críticos señalan la inestabilidad, las incompatibilidades con herramientas comunes (como `fzf` y apps ncurses) y la gestión de dependencias de Python como desventajas serias. La conversación se amplía hacia una cuestión más general: si los desarrolladores deberían priorizar aprender shells más nuevas como Xonsh, Fish y Nushell para el trabajo diario, o seguir con las herramientas POSIX disponibles por defecto en la mayoría de los sistemas.
Qué es Xonsh y a quién va dirigido
- Shell impulsado por Python cuyo objetivo es combinar Python y la semántica tradicional de las shells.
- Se presenta como “Unix‑gazing” / “Bash‑wards compatible”: en general se parece bastante a la experiencia de Bash, pero no es compatible con POSIX ni 100% compatible con Bash.
- Se percibe como especialmente atractivo para usuarios de Unix en Windows que quieren una experiencia similar a Bash.
Ventajas y experiencias positivas
- Usuarios informan años de uso diario en Linux y Windows y dicen que “les encanta”, a pesar de cierta lentitud frente a shells basadas en C.
- Tiene un fuerte atractivo para quienes no soportan programar en Bash; los scripts de xonsh se describen como más claros y con más probabilidades de mantenerse a largo plazo.
- Mezclar comandos de shell y Python en un mismo lugar es uno de sus grandes atractivos (por ejemplo, cálculos rápidos, lógica Python en pipelines, archivos rc más limpios).
- Algunos lo encuentran lo bastante configurable como para parecerse a zsh y no implicar “más tecleo”.
Desventajas, estabilidad y compatibilidad
- Varios usuarios se fueron tras bloqueos frecuentes; la estabilidad de una shell se considera crítica. Una fuente importante de problemas fueron las versiones de prompt-toolkit.
- Las incompatibilidades con flujos de trabajo de Bash/zsh (por ejemplo, el uso de fzf, saltos de línea en la sustitución de comandos, rarezas no estándar) son puntos de dolor recurrentes.
- Algunos lo ven demasiado poco estándar como para compartir comandos con compañeros o usarlo en shebangs.
- El rastreador de issues de GitHub se menciona como una razón para “quedarse con el diablo que ya conoces”.
Python como base: preocupaciones y réplicas
- Preocupan los problemas de dependencia y empaquetado de Python, que podrían afectar la fiabilidad de la shell.
- Contraargumento: Bash no tiene ninguna gestión de dependencias; xonsh en sí tiene pocas dependencias, y en la práctica las actualizaciones de Python suelen requerir solo una reinstalación rápida.
Elección de shell: nuevas vs antiguas
- Debate sobre si conviene invertir en shells modernas (xonsh, nushell, fish, elvish, etc.) frente al ubicuo Bash/Posix.
- Algunos priorizan la portabilidad y el aprendizaje mínimo (bash/sh en todas partes).
- Otros abogan por la comodidad y la productividad en sus propias máquinas, usando Bash solo cuando sea necesario.
Alternativas y shells con datos estructurados
- Otras shells “incrustadas en un lenguaje” o con objetos/datos estructurados mencionadas: nushell, marcel, rash, scsh, enfoques basados en Tcl, elvish, murex, rc, eshell en Emacs.
- Se desea que las shells/herramientas pasen objetos o JSON en lugar de texto, salidas estandarizadas legibles por máquinas y análisis de argumentos/ayuda integrados.
LLMs y cambios en el flujo de trabajo
- Al menos un usuario informa haber reemplazado en gran medida xonsh por GPT‑4 para scripting rápido y tareas de pegamento, aunque otros señalan que los LLM actuales tienen problemas con dominios de nicho como Nix moderno.