I've been using Xonsh as my main shell for a few years now, and I'm really pleased with the switch.<p>There are some downsides you need to overcome:<p>* Slower to start. Takes a second or two before I can start typing when I open a new tab.<p>* Less stable. Upgrading will occasionally break something, or spit out warnings you gotta find a way to silence.<p>* 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.<p>* Tab completion is not straightforward.<p>But IMO I get ample compensation:<p>* 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.<p>* I'm actually able to remember the syntax for looping and conditional.<p>* I'm more self-sufficient in the terminal for small things like arithmetic operations, generating a UUID, testing regexes, etc.<p>* 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.