Shells are computer user interfaces that typically refer to a text-only or primarily text-based command prompt.
The above screenshot shows the bash shell with an active Python virtual
environment named fullstackpython
within the macOS Terminal application.
cmd is the Pythonic standard library module that can be used for building your own shells. The Python CmdModule wiki page has a great overview of the module and its capabilities.
Give your Python program a shell with the cmd module shows a short code example of how to use cmd to build a simple shell.
Super Charge Your Shell For Python Development covers aliases, environment variables via Autoenv and some basic shell commands often used during development.
Terminal latency quantifies the impact of lag in your keystrokes appearing on the screen. It's a fascinating look at how a small difference of tens of milliseconds causes some shells and editors to feel slow while others are snappy.
Why Create a New Unix Shell? is a post by the creator of Oil shell that goes into the rationale for building a new shell even though so many others such as Bash, zsh, PowerShell and KornShell already exist.
explainshell
(source code) is a wonderful
little tool that shows how input and arguments in the shell break
down and are interpreted by commands. The data is pulled from the
Ubuntu man
pages.
Shell productivity tips and tricks covers how to increase your effectiveness on the shell across topics such as navigating history, autocompletion, and pattern matching.