31

I know this might sound foolish but I just wanted to know if there is really a difference between the two words used in the Linux world. I do know that the Shell is a Command Line Interface and has many variants like Bash, Korn, etc. And I also know that a Ctrl+Alt+T launches a terminal on Ubuntu. I just want to connect these two dots.

Does it mean the terminal is the window that opens up and the shell is the program that runs behind to interpret the commands typed in the window? Or are they same wherein terminal is a generic term used to abstract the concepts of Shell,etc?

What is it that exactly differentiates the two words?

3 Answers 3

32

The terminal emulator (often just called terminal) is "just the window", yes. It runs a text based program, which by default is your login shell (which is bash in Ubuntu). When you type characters in the window, the terminal draws these characters in the window in addition to sending it to the shell's (or other program's) stdin. The characters the shell outputs to stdout and stderr get sent to the terminal, which in turn draws these characters in the window.

So yes, the shell and the terminal emulator are completely separate programs, and either can be used without the other.

2
  • 2
    How can you use shell without terminal? Jun 10, 2015 at 19:00
  • 7
    @KorayTugay, when you run a shell script from cron or via a desktop launcher (where you have not checked "run in terminal"), you're using a shell without a terminal.
    – geirha
    Jun 10, 2015 at 19:17
8

I think this question has been explored pretty thoroughly on the Unix and Linux stackexchange site: Differences between shell, console and terminal

2
  • 3
    May be you could add the essential parts of the link into your answer?
    – jokerdino
    Mar 9, 2012 at 12:28
  • This is not an answer, this is a comment. Jun 10, 2015 at 19:00
6

Yes, the terminal emulator and the shell are two different programs. As you're aware, one example of the difference is that launching a terminal window can run different shells depending on what you have configured (bash, tcsh, ksh, ash, even python!).

Another difference is that there are more terminal emulators than just the default: gnome-terminal, several varieties of xterm, konsole (for KDE), etc. (see: http://www.howtogeek.com/howto/ubuntu/set-the-default-terminal-emulator-on-ubuntu-linux/ ). Any shell can be run in any of these terminal emulators, without much difficulty.

A third difference is that, besides running shell commands, you can also start certain interactive applications in your terminal emulator, and they will run in the same window (and still relying on the same terminal emulator program to handle the actual graphics), such as the vim text editor, the nethack RPG, and others. If you wanted, you could set up a profile in your terminal emulator to start nethack, say, automatically when you opened a new tab; no shell involved, but the terminal emulator is still the same program.

A fourth difference is that you can perform remote logins, using a program like ssh, from inside a terminal window. In this case, your shell (or whatever program you run remotely) is running on another computer, and the ssh program connects it to the local terminal emulator program running on your machine which handles graphics.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .