Shell shouldn't be a completely new language, it should be an extension to already existing programming language, making completely new dialect makes it harder to remember and transition to other languages. It shouldn't be just a REPL, it should be an UX handcrafted so you feel it's a shell and not just an stdin input. It shouldn't be a barebones construct that allows to set values and do loops, it should have proper standard functionality like variable scoping, type system, serialization to specific formats, administration tooling and readable output.
@pj What kind of magnitude of project would it be to actually implement such a shell?
@conte A good example would be PowerShell (https://github.com/powershell/powershell) as it fits most of what I said, mostly the administration, type system and serialization part. My main grip with PowerShell is that it's dotnet (not very portable) but also performance has always been a pain point (very noticeable when using lots of modules and big profile config). Another good example of good UX is fish (https://fishshell.com/) although they opted into few quite annoying decisions like not allowing $() syntax (it was recently implemented though) but the interactive part of fish is what makes it a great shell to use daily and because it tries to have best defaults for most users (unlike zsh where you have to configure everything yourself).
GitHub - PowerShell/PowerShell: PowerShell for every system!

PowerShell for every system! Contribute to PowerShell/PowerShell development by creating an account on GitHub.

GitHub
@pj I'm aware of powershell already, I meant something like trying to adapt the python repl to a shell or something similar.
@conte Most likely possible but I'm not able to calculate the required work to do so. I think it would be better to start from scratch (but re-using already existing libraries) to build such software. Certainly a massive project to undertake that would take at least a year for single person if that person was working on it daily and that's just for coding/implementing. There's a lot to unpack such as testing, defining behaviour, retaining compatibility with certain behaviours of POSIX.