The primary role of a shell is to let you run the programs that are installed on your system. As a consequence, all command line shells let you run pretty much the same commands. The differences are a very small number of commands that are built into the shells themselves, which vary a little between shells.
Shells differ mainly in terms of their programming facilities and their command line capabilities (completion, history recall, syntactic convenience, etc.). See
What are the fundamental differences between the mainstream *NIX shells?. Shells are responsible for command line edition and this too varies between shells.
For interactive use, bash is the default on Linux, zsh is the default on macOS. If you've started to get used to bash, you can read my guide to why zsh is better. The only other serious contender for interactive use is fish which has nice defaults but little configurability.
fish
(and the ancientc shell
) are "POSIX compliant" (as long as you don't use shell-specific features that aren't).fish
offers a more modern, (IMHO) better syntax, but you sacrifice compatibility. – NotTheDr01ds Apr 07 '21 at 22:09