In the seventies and ealy 1980s, computers were things that lived in Air-conditioned rooms, with a slew of white coats in attendence. Users sat at all sorts of Telecom Suplus stuff, like teletypes (basically a typewriter that sends SMS messages as well), and terminals (television screens that acted as line printers).
So command.com and cmd.exe emulate teletype programs. That means you could run these on a typewriter-style session. Edlin is a text editor that runs in a teletype session.
Terminals allow one to reposition the cursor anywhere on the screen, so you could get text-windowing, like Edit or MSD. There's programs like CICS which give quite usable screens with very narrow band width.
Fancier computers allow you to run either teletype sessions, like command.com or cmd.exe, and terminal console programs (like edit or msd), in a text window, but because they were teletype or terminal sessions, they still keep that name.
A shell is a wrapper program. Command.com and bash are shells, that mean you don't have to do things like supply the full path to every program you run, and interpret strings to commands. There are terminal shells as well, such as XTree and NC. Most users in the 1980s used things called menu programs, where you picked an option off a menu, and it ran the matching batch file.
Programs like edlin and debug are teletype programs, debugging particulary, in that the connection between the computer running the program and the listener might be some thing like a 9-pin serial cable.
1
See if the answers on these threads help: http://superuser.com/questions/96628/why-are-things-like-gnome-terminal-called-terminal-emulators-instead-of-just? or http://superuser.com/questions/347430/whats-the-difference-between-a-console-terminal-and-command-line?
– fixer1234 – 2015-12-23T07:14:59.160Note that the "shell" and the "terminal" are usually separate components – the former just interprets commands, the latter draws the shell's output on screen. When you ssh, you're using a local terminal to talk to a remote shell. On Windows, "CMD" (as in cmd.exe) is a shell, PowerShell is also a shell, and the OS itself provides a terminal (usually called Console since it works slightly differently from what Unix calls "terminals"). On Linux, bash is a shell, and xterm is a popular terminal. – user1686 – 2015-12-23T07:18:38.397