&gt; <i>[...] shell is a mess and [...] the basic root cause of the mess is that you can not straddle interactive use and programmatic use with one language.</i><p>Note that some of the world has already taken this notion on board long since.  About a decade ago, Debian Linux and Ubuntu Linux swapped out &#x2F;bin&#x2F;sh so that it was no longer the Bourne Again shell.  Nowadays, as a result of this, one regularly finds Linux systems where programmatic shell scripts are interpreted by something like the Debian Almquist or Debian Policy-Ordinary (posh) shells and interactive login session shell work is the domain of the Bourne Again, Korn, Z, or other shells.<p>And of course, having a different &quot;better&quot; shell for interactive use was the reported rationale for the C shell.