I use nushell as my daily driver but I've tried a few "alt" shells over the years, from fish to xonsh and now nushell.
oil is really two different languages, OSH and YSH. OSH is basically aimed at replacing bash with little to no code changes, just less idiosyncrasies in the interpreter. If you like the idea of using shell scripts for building/controlling critical components but hate the idea of using ([db]?a)?sh then osh is probably a good option. I have not personally used YSH as a daily driver shell.
xonsh is aimed at people who like Python so much that they want to have a Python-esque shell and it's quite nice, although sometimes it's not exactly obvious when you should switch to raw Python eval mode when it comes to the nitty-gritty (or should you just write a Python script at that point?).
fish is really nice, specifically aimed at interactive use. Includes a lot of features out of the box. If you're looking to try any interactive shell, I recommend starting with fish. I've come very close to switching back to fish during my adventures with both xonsh and nushell. Subprocess support is.. As far as I know, still quite lacking. There are workarounds for 90% of use-cases of subprocesses, though.
nushell could probably be described as heavily PowerShell inspired, but written in rust. The syntax has changed several times, it's quite experimental. One of the most annoying things about nushell is that it has built-ins that override things like ls, rm, etc. and you have to use ^ls ^rm etc. to break-out of that behaviour (or get used to the "nu" way). I believe the main reason for this is because nu pipelines aren't just working on streams of text. See https://www.nushell.sh/book/pipelines.html#behind-the-scenes for better explanation.
If you used PowerShell and simply enjoyed using PowerShell specifically, then you can also install pwsh on *nix. Perhaps the main downside is that most tutorials, modules etc. are written with Windows in mind, but as a shell it works perfectly fine.
Thanks, that's a great breakdown. I'm not too worried about libraries, as I try to avoid importing code willy nilly, but have you used pwsh extensively on nix? How powerful is the object/data model when it doesn't have access to COM/.NET/etc? Does it create integrations/reimplementations for distinctly nix things like device files? Or will I basically be writing a lot of compatibility layers to get raw text into structured data?
My use of non-Windows PowerShell is mainly used to sanity checking scripts that are destined to run on Windows boxes, where I want to quickly check the semantics of certain OS agnostics behaviour without firing up a remote desktop to a Windows VM.
work exactly as you'd expect them to on *nix. I don't have procfs on my system but I imagine that would work just the same as interacting with any other file.
PSDrive works the same as you would expect, including things like reading/manipulating ENV via the "Env:" PSDrive.
I can't think of anything off the top of my head that you can do in Bash that you couldn't do in PowerShell.
I use nushell as my daily driver but I've tried a few "alt" shells over the years, from fish to xonsh and now nushell.
oil is really two different languages, OSH and YSH. OSH is basically aimed at replacing bash with little to no code changes, just less idiosyncrasies in the interpreter. If you like the idea of using shell scripts for building/controlling critical components but hate the idea of using ([db]?a)?sh then osh is probably a good option. I have not personally used YSH as a daily driver shell.
xonsh is aimed at people who like Python so much that they want to have a Python-esque shell and it's quite nice, although sometimes it's not exactly obvious when you should switch to raw Python eval mode when it comes to the nitty-gritty (or should you just write a Python script at that point?).
fish is really nice, specifically aimed at interactive use. Includes a lot of features out of the box. If you're looking to try any interactive shell, I recommend starting with fish. I've come very close to switching back to fish during my adventures with both xonsh and nushell. Subprocess support is.. As far as I know, still quite lacking. There are workarounds for 90% of use-cases of subprocesses, though.
nushell could probably be described as heavily PowerShell inspired, but written in rust. The syntax has changed several times, it's quite experimental. One of the most annoying things about nushell is that it has built-ins that override things like ls, rm, etc. and you have to use ^ls ^rm etc. to break-out of that behaviour (or get used to the "nu" way). I believe the main reason for this is because nu pipelines aren't just working on streams of text. See https://www.nushell.sh/book/pipelines.html#behind-the-scenes for better explanation.
If you used PowerShell and simply enjoyed using PowerShell specifically, then you can also install pwsh on *nix. Perhaps the main downside is that most tutorials, modules etc. are written with Windows in mind, but as a shell it works perfectly fine.