Bash's list of behaviours that aren't POSIX-compliant is longer than I expected: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
I used fish for a while and liked it, but POSIX-ish shells work with everything. These days I use a heavily customised zsh.
miniblog.
Related Posts
This is really neat: an online collection of programs that can pass the type checker but fail at runtime, in a bunch of languages (Java, Scala, OCaml, Haskell, Rust): https://counterexamples.org/runtime-misinformation.html
It also discusses the design tradeoffs that led to these behaviours.