Xonsh: Python-powered, cross-platform, Unix-gazing shell
A Python-powered shell called Xonsh is prompting debate over whether modern, feature-rich shells can realistically replace ubiquitous options like Bash and Zsh. Supporters praise its ability to mix Python with traditional shell commands, write more maintainable scripts, and run cross‑platform (especially on Windows), while critics cite instability, incompatibilities with common tools (like `fzf` and ncurses apps), and Python’s dependency management as serious drawbacks. The conversation widens into a broader question of whether developers should prioritize learning newer shells such as Xonsh, Fish, and Nushell for daily work, or stick with the POSIX tools that are available by default on most systems.
What Xonsh Is and Who It Targets
- Python-powered shell aiming to combine Python and traditional shell semantics.
- Marketed as “Unix‑gazing” / “Bash‑wards compatible”: generally close to Bash UX, but not POSIX-compliant and not 100% Bash-compatible.
- Seen as especially appealing for Unix users on Windows who want a Bash-like experience.
Pros and Positive Experiences
- Users report years of daily use on Linux and Windows and “love it” despite some slowness vs C-based shells.
- Strong appeal for people who dislike Bash scripting; xonsh scripts are described as clearer and likely to be kept long term.
- Mixing shell commands and Python in one place is a key draw (e.g., quick math, Python logic in pipelines, cleaner rc files).
- Some find it configurable enough to feel similar to zsh and not “more typing.”
Drawbacks, Stability, and Compatibility
- Several users left after frequent crashes; stability of a shell is considered critical. One major source of issues was prompt-toolkit versions.
- Incompatibilities with Bash/zsh workflows (e.g., fzf usage, newlines in command substitution, non-standard quirks) are recurring pain points.
- Some see it as too nonstandard to share commands with teammates or to put in shebangs.
- GitHub issue tracker is cited as a reason to “stick with the devil you know.”
Python as Foundation: Concerns and Rebuttals
- Worries about Python’s dependency and packaging problems affecting shell reliability.
- Counterpoint: Bash has no dependency management at all; xonsh itself has few deps, and in practice Python upgrades mainly require a quick reinstall.
Shell Choice: New vs Old
- Debate over whether to invest in modern shells (xonsh, nushell, fish, elvish, etc.) versus ubiquitous Bash/Posix.
- Some prioritize portability and minimal learning (bash/sh everywhere).
- Others argue for comfort and productivity on their own machines, using Bash only where required.
Alternatives and Structured-Data Shells
- Other “language-embedded” or object/structured shells mentioned: nushell, marcel, rash, scsh, Tcl-based approaches, elvish, murex, rc, eshell in Emacs.
- Desire for shells/tools that pass objects or JSON instead of text, standardized machine-readable outputs, and built-in argument parsing/help.
LLMs and Workflow Changes
- At least one user reports largely replacing xonsh with GPT‑4 for quick scripting and glue tasks, though others note current LLMs struggle with niche domains like modern Nix.