The answer to the question can be illustrated by the following screenshot.
In this screenshot, I have captured the process of my “Shell” – bash and you can see that the shell is a child process of the parent process with pid – 14398. Which if I check is the pid for the mate-terminal. So to understand this simply, shell is invoked as the child process of a terminal emulator in the current Linux environment.
Terminal
In unix terminology, a terminal is a particular kind of device file which implements a number of additional commands (ioctls) beyond read and write. Nowadays the terminals, which are called pseudo-terminals or pseudo-ttys, are provided (through a thin kernel layer) by programs called terminal emulators. Some types of terminal emulators include:
- GUI applications running in the X Window System: Xterm, Gnome Terminal, Konsole, Terminator, etc.
- Screen and tmux, which provides a layer of isolation between a program and another terminal
- Ssh, which connects a terminal on one machine with programs on another machine
- Expect, for scripting terminal interactions
The word terminal can also have a more traditional meaning of a device through which one interacts with a computer, typically with a keyboard and display. For example an X terminal is a kind of thin client, a special-purpose computer whose only purpose is to drive a keyboard, display, mouse and occasionally other human interaction peripherals, with the actual applications running on another, more powerful computer.
Shell
A shell is the primary command line interface that users see to invoke other programs. This is done by providing an interface to use to “talk-to” the kernel.
There are many different unix shells. Ubuntu’s default shell is Bash (like most other Linux distributions). Popular alternatives include zsh (which emphasizes power and customizability) and fish
The detailed answer is mentioned in the following stackoverflow article.