I've been using Xonsh for about four years now, and it continues to be a solid daily driver unix shell for me, despite some issues.
Before xonsh, it was extremely common for me to feel torn between writing a shell script and a Python script for a given small project: "well, this script does some complicated logic, which would be a massive pain in bash, but it also extensively deals with the kind of OS resources that are easy to handle in bash (files, text streams, process management, ...) but require a bunch of boilerplate in Python". Xonsh means you don't have to choose. Everything easy in Python is easy; and (almost) everything easy in bash is easy.
Day to day, I also love that I can have various Python utilities loaded directly into my shell - I use python's math capabilities constantly, and really appreciate the rich data types and utilities, both built in and from standard libraries like collections
and itertools
.
The biggest issue is that xonsh syntax is kind of "beholden" to Python syntax, but of course the python team doesn't see "this breaks xonsh scripts" as sufficient for a change to be "breaking". This sometimes causes stuff to break in your xonsh scripts if you were using clever mixtures of shell and Python syntax, which later gets parsed differently due to a Python update. I have a standing intention to figure out an easy way to peg my xonsh environment to a particular Python version to avoid this churn. Maybe I'll try nix for the fifth time.
The second biggest issue is that it's slow, compared to bash. This basically doesn't matter for me, since (a) when I'm doing anything performance critical I'm using Rust anyway, and (b) my usual workflow involves long lived sessions, so startup latency is acceptable.
Overall, it's definitely worth the trade-off for me vs all other shells I've tried (I've used bash, zsh, and fish for a year or more each, and tried others like nushell and elvish for at least a day); I'd recommend it if you often wish your shell had sane data types or powerful math baked in.
like this
JP Addison and Daniel Ziegler like this.