A shell is not the same as a REPL (Read Evaluate Print Loop). They look similar, but they have deep differences.
Shells are designed for one-line commands, and they’re a little awkward when used as programming languages.
Scripting languages are designed for files of commands, and they’re a little awkward to use from a REPL.
IPython is an interesting hybrid. You could think of it as a Python REPL with shell-like features added. Eshell is another interesting compromise, a shell implemented in Emacs Lisp that also works as a Lisp REPL. These hybrids are evidence that as much as people like their programming languages, they appreciate additions to a pure language REPL.