Bash is the least worst language for bootstrapping since the alternative is POSIX shell which is even more difficult to get right.
The biggest issue is that Bash 3.x arrays don't work well with `set -u`.
What is wrong with GPLv3 for Apple and why is it okay in Linux?
I think if one only ever uses their own computers fish is better, but having to switch contexts, having to have different configurations and so on is a pain and not very productive.
https://anisse.astier.eu/bash-to-fish.html
One thing I haven't touched in my article: globbing behaves differently than the default, which means you have to quote your '*.ext' arguments when using find for example. This is fairly well documented: https://fishshell.com/docs/current/index.html#expand
I very rarely move back to bash, so I consider this migration a success :-) If you haven't yet, should try it !
Now I use Fish Shell on Linux and it's fine for what I usually do.
Works out-of-the-box for me on most machines (i.e. I don't maintain shell settings besides downloadding GRML zsh regularly) and it is not as big as oh-my-zsh.
If you're looking to replace oh-my-zsh with something sane and fast, zprezto has been my go-to choice.
Source: https://developer.apple.com/documentation/macos_release_note...
A pity they didn't make a structured output shell rather than traditional regex scraping but their main concern is compatibility, and zsh fits nicely.