Re:Alternative Shells
by samdg on Saturday August 26, 2023 @05:29PM
(#37277080)
I've been using Xonsh as my main shell for a few years now, and I'm really pleased with the switch.
There are some downsides you need to overcome:
* Slower to start. Takes a second or two before I can start typing when I open a new tab.
* Less stable. Upgrading will occasionally break something, or spit out warnings you gotta find a way to silence.
* Lack of compatibility. Tools that change you shell profiles to shim some executables (like rvm or pyenv) will not work. I typically source some files manually, or resort to bash if I need to.
* Tab completion is not straightforward.
But IMO I get ample compensation:
* I can write much better and cleaner scripts using Python's syntax and standard lib. Being able to use `argparse` is a blessing, compared to how you read arguments and flags in bash.
* I'm actually able to remember the syntax for looping and conditional.
* I'm more self-sufficient in the terminal for small things like arithmetic operations, generating a UUID, testing regexes, etc.
* Having typed/structured data in the shell, vs everything being plain text is also quite useful when you don't want to turn some easy task into some complex text processing pipeline.
There are some downsides you need to overcome:
* Slower to start. Takes a second or two before I can start typing when I open a new tab.
* Less stable. Upgrading will occasionally break something, or spit out warnings you gotta find a way to silence.
* Lack of compatibility. Tools that change you shell profiles to shim some executables (like rvm or pyenv) will not work. I typically source some files manually, or resort to bash if I need to.
* Tab completion is not straightforward.
But IMO I get ample compensation:
* I can write much better and cleaner scripts using Python's syntax and standard lib. Being able to use `argparse` is a blessing, compared to how you read arguments and flags in bash.
* I'm actually able to remember the syntax for looping and conditional.
* I'm more self-sufficient in the terminal for small things like arithmetic operations, generating a UUID, testing regexes, etc.
* Having typed/structured data in the shell, vs everything being plain text is also quite useful when you don't want to turn some easy task into some complex text processing pipeline.