Why not PowerShell, though? If you ever want to directly administer Windows through the command-line, PowerShell is increasingly your only bet, as older CMD executables are deprecated.
I'll suffix with my opinion that PowerShell is much nicer than many POSIX shells, especially given its hybrid object-oriented + functional pipeline paradigm.
And following on this, for the longest time Windows only had extremely limited ability to manage itself via the command line and things were very haphazard on how you could manage them on the CLI. You were probably just using the CLI to edit the registry and restart serivces/executables at the best case.
This is really the reason there are no shells for windows. There wasn't anything for the shell to do! No massive collection of small executables linux *nix that were shell oriented. No system design around CLI management.
Around Windows 2016 or so I would say this changed with Powershell and with a number of design changes by Microsoft that allowed much better remote management (and not fully depending on GPO to do it), and I even run into some customers that have headless windows servers these days.
The distinction is kind of meaningless. If you want an extensible shell in windows you're either using powershell (which I have come to quite like) or you can use any of the Linux shells that exist via WSL. Native shells just were not a thing for the longest time as the type of user that wanted that tended to go to Linux.
+1 for Take Command. I've used it since its mid-90s iteration, and still use it nearly every day. It has a great mix of command prompt features and batch file language enhancements.
Way back when there were a few substitutes for command.com, but none of them offered sufficiently utility to gain traction outside of the IT department. And since it's now trivially easy to run a unix virtual machine and do your command line stuff there if you want, I'm not sure there's much inventive to develop alternatives.
I personally don't count powershell as a shell, it's more like an interpreted/jit compiled .net interactive CLI 'shell', hence why it is slow to start and to run
A shell is a program that takes your commands and send them to the OS, it doesn't compile anything
a shell is what you type your commands into. a shell interprets those commands, pipes between them, and to and from file handles, and acts as the interface between the human and the things they want to do.
bash is FAR slower than PowerShell, and it's interpreted.
This really sounds like shell gatekeeping touching on the no true Scotsman fallacy.
The purpose of the shell, to me, is to
1. Remote management/system administration.
2. Application execution
3. Data modification in situ
And powershell does all 3 for me.
Lastly just typing bash/pwsh is a useless benchmark as I can make both run at wildly different speeds (bash .profile modification and pwsh -noprofile loading)
I'll suffix with my opinion that PowerShell is much nicer than many POSIX shells, especially given its hybrid object-oriented + functional pipeline paradigm.