I personally think
shells/fish is very useful to most people; I'd say it's a great replacement for those who like more featureful shells such as bash, ksh, and zsh. For people who don't mind putting up with some annoyances and "fixing up" their shell with the shell's equivalent of
$HOME/.profile the same way you'd fix up bash and ksh, there are two shells with strong similarities to each other:
shells/rc and
shells/es. All three alternative shells are decent when it comes to scripting, but they also all have their own quirks and challenges to overcome.
shells/rc is my personal preference despite it not even supporting tilde expansion.
And there are plenty of other shells with syntax that differs from sh, such as
shells/elvish and
shells/xonsh, though I admittedly haven't tried any of them.
I think shell innovation is difficult in general. Languages like Python and Perl are powerful, yet verbose, while sh sacrifices such powerful features in favor of a less verbose syntax full of symbols rather than words in English or some other language, which contributes to its poor readability. In addition, it still needs to be usable in an interactive session. A balance between those requirements (and possibly several others) must be struck, so sacrifices must be made somewhere.
On top of all of that, a new shell deviating from existing conventions can be problematic when attracting new users or porting scripts. In the case of fish, you couldn't use something like
command1 && command2
until v3.0 (
command1; and command2
was fishy).
Ultimately, sh is the most portable syntax, but there are definitely better shells, whether you're talking about interactive use or scripting.