In Windows, when you open a command prompt, almost always the program that is running is cmd.exe
. It's an enhanced NT derivative of the old DOS-based command.com
, which is in turn has similarites with the even older CP/M CCP
command interpreter.
In Linux, as @Griffin mentions, usually you are running bash
in some sort of terminal emulator if you are using it in a graphical environment. (which can vary widely depending on your distro and desktop environment). This stands for "Bourne Again SHell" because it's an extended version of an earlier "Bourne" shell (sh
) that's been standard on Unix for a long time. There's other "alternative" shells in common use such as csh
, ksh
, and tcsh
.
The Windows cmd.exe
can be considered a shell as well (as can explorer.exe
).
Both the Windows command prompt and all Unix shells have several "built-ins", or commands that are handled entirely within the shell. This includes some basic commands (such as cd
) and many conditional commands and operators that control script flow if a batch file of commands are executed.
However, in both Linux and Windows, the great majority of "commands" that do useful things are in fact external programs that are "called" by the the shell. And that is the primary purpose of a shell, to enable an operator to start programs with specifying arguments for those programs. It's not really strictly a programming language, it's just a framework for launching programs.