this post was submitted on 15 Sep 2025
344 points (98.0% liked)
Linux
58235 readers
891 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 6 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I like nushell, but I love xonsh. Xonsh is the bastard love child of Python and Bash.
it can be thought of as:
Now, that's not a very accurate description, because the reality is more nuanced, but it allows for things like:
Now, there are things in there I wouldn't bother with normally - like, rather than using
mv
, I'd just usefile.rename()
, but the snippet shows a couple of the tools for interaction between xonsh and sh.But, either a line is treated in a pyhony way, or in a shelly way - and if a line is shelly, you can reference Python variables or expressions via @(), and if it's Pythony, you can execute shell code with !() or $(), returning the lines or the exact value, respectively.
Granted, I love python and like shell well enough, and chimeras are my jam, so go figure.
Does this offer anything of pure python?
It's a superset of python, so valid python should run fine. Imports into your shell are doable, too -- for example, I import
path.Path
in my xonshrc, so it's always available when I hit the shell. I don't often have to usePath
, because regular shell commands are often more straightforward. But when I do, it's nice to have it already loaded. Granted, that could get kooky, depending on what you import and execute.You can associate/shebang Xonsh with .xsh files, or run "xonsh foo.xsh" - and that works like "bash foo.sh" would, except using xonsh syntax, of course.
It's not Bash compatible - copypasta of scripts may not work out. But it's a good shell with some typical shell semantics.
there are some great plugins, too - like autovox, which allows you to create python venvs associated with specific subfolders. so,
cd myproject
does the equivalent ofcd myproject; . path/to/venv/bin/activate
.overall, there definitely is some jank, but it's a great tool and I love it.
Hm. That sounds delightful. I do think once your script hits a not one liner level of complexity, python is a logical next step.
Does it provide any useful stuff to Python itself? Would I like, derive any benefit to writing a script in xonsh over pure python?
Xonsh is also a really cool option. If I used Python more regularly and was more comfortable using it without having to look stuff up, I'd probably use it over Nushell.
Yeah, I think if I wasn't familiar with Python, it'd be nushell all the way.