If you want to do a Bash like management and programming, that is not dramatically different but fixes some irritations, then Fish is an alternative. Obviously it will not fix all issues, but there is no paradigm shift in handling streams. nushell is dramatically different and at that point, I would rather use a programming language to do the stuff. Speaking of programming language, there is also Xonsh (basically Python+Bash like combination as a system shell).
All these alternatives have a singular big flaw to me: they are not the standard tools on the system, which defeats the purpose of a system shell to me. In the end, without changing the core system that these shells are built on, I don't think its possible to make a really well made language that interoperates on system level like a shell does at the moment.
That's the reason why I got a bit more into Bash to understand some flaws, to understand how to use regexes inside Bash and variable substitutions and a few other concepts that are very useful to know. But man... there are so many traps... like looping over a wildcard for files (such as for file in *.txt) and if the wildcard does not match, then the loop consists of the wildcard as a literal word as if "*.txt" was a filename. What a stupid idea. There is an option to change that, but that's the issue. The language is filled with traps and optional options and you have to know all of them.
Edit: Added example code why default behavior sucks:
$ for file in *.ABCD; do echo "${file}"; done
*.ABCD
shopt -s nullglob
$ for file in *.ABCD; do echo "${file}"; done