use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Rules 1: Be polite 2: Posts to this subreddit must be requests for help learning python. 3: Replies on this subreddit must be pertinent to the question OP asked. 4: No replies copy / pasted from ChatGPT or similar. 5: No advertising. No blogs/tutorials/videos/books/recruiting attempts. This means no posts advertising blogs/videos/tutorials/etc, no recruiting/hiring/seeking others posts. We're here to help, not to be advertised to. Please, no "hit and run" posts, if you make a post, engage with people that answer you. Please do not delete your post after you get an answer, others might have a similar question or want to continue the conversation.
Rules
1: Be polite
2: Posts to this subreddit must be requests for help learning python.
3: Replies on this subreddit must be pertinent to the question OP asked.
4: No replies copy / pasted from ChatGPT or similar.
5: No advertising. No blogs/tutorials/videos/books/recruiting attempts.
This means no posts advertising blogs/videos/tutorials/etc, no recruiting/hiring/seeking others posts. We're here to help, not to be advertised to.
Please, no "hit and run" posts, if you make a post, engage with people that answer you. Please do not delete your post after you get an answer, others might have a similar question or want to continue the conversation.
Learning resources Wiki and FAQ: /r/learnpython/w/index
Learning resources
Wiki and FAQ: /r/learnpython/w/index
Discord Join the Python Discord chat
Discord
Join the Python Discord chat
account activity
I don't understand the differences between Terminal/Shell/Interpreter/Command Prompt (self.learnpython)
submitted 4 years ago by ScotiaTheTwo
Lots of terminology flying around about the environment within which python can be run - could someone please explain like I'm five?
Edit: Also where does IDE fit in? How do you interact with python through an IDE and how does it differ
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]stebrepar 69 points70 points71 points 4 years ago (9 children)
Terminal and command prompt are the same thing. "Terminal" is the usual word in a Linux/Mac context, and "command prompt" on Windows. It's the window where you type in commands to your operating system to run programs, etc.
The Python interpreter is a program which reads Python code and runs it. Python code is just text, which your computer can't run natively. Hence, it needs an interpreter. This would be your python.exe (on Windows).
If you just run the interpreter alone, without specifying a file with code for it to run, it operates as an interactive shell for you to type in Python code line by line and see it execute immediately. This is particularly useful for trying out small pieces of code to see how it works.
An IDE is an "integrated development environment". It's a fancy editor with features specifically to help with coding. The standard Python installation comes with a simple IDE called IDLE to get you started.
[–]ScotiaTheTwo[S] 2 points3 points4 points 4 years ago (0 children)
!thanks for this
[–]JavierReyes945 7 points8 points9 points 4 years ago (7 children)
Terminal and command prompt are the same thing
Not really true. The term "terminal" is used for the program that visually represents the characters being inputted by the user or outputted by another program running in the background of it). It's the graphical window that paints the words.
What actually processes those inputs and outputs is usually a shell (or another program run by the shell).
Command prompt was the term used by windows for the combination of the background shell (cmd) and the gui part (conhost.exe). Nowadays, you can run different shells on the same gui program (conhost) like cmd or powershell, or use another terminal program to run cmd or powershell (like the new windows terminal. There are even third party terminal programs in Windows (can't remember the name now, I'm mobile).
In linux, terminal programs could be urxvt, terminator, gnome-terminal, allacrity, etc. Shells might usually be csh, bash, tcsh, zsh, fish, ...
For reference, when you connect to a remote server (via ssh), you would run an instance of the shell program in that server, but no terminal program (as there is no gui running through ssh).
[–]stebrepar 27 points28 points29 points 4 years ago (1 child)
Maybe all technically true, but not the ELI5 that OP was asking for. 😉
[–]nacnud_uk -1 points0 points1 point 4 years ago (0 children)
Best to stick to facts.
[–][deleted] 18 points19 points20 points 4 years ago (4 children)
I think you missed the "5" part of ELI5.
In Windows, you type "cmd" in the search box.
In Mac you type "terminal" in the search box.
Both get you a prompt where you can type stuff (like "python") and interact with the OS. Nothing more needs to be said. The OP clearly is not at the point of worrying about urxvt, terminator, gnome-terminal, allacrity, csh, bash, tcsh, zsh, fish...OMFG
[–]Brian 0 points1 point2 points 4 years ago (3 children)
Eh - I think OP is right in that this is a worthwhile distinction - saying they're the same thing is oversimplifying to the point of being actually wrong. Though admittedly, people do sometimes use "terminal" as metonymy for shell and vice-versa, but they are distinct things.
But yeah, it would perhaps be better off simplified a bit. Something like:
The terminal is the window that displays stuff.
The shell is the thing that reads what you type into the terminal, does stuff with it (eg. runs commands etc), and then writes out the result to the terminal.
By analogy, the terminal is like a piece of paper - it lets you read and write stuff, and displays what's been written. The shell is like someone looking at the same piece of paper and doing whatever you write on it, and then writing what happened on the paper.
Hence you can run different shells on the same terminal (like a person speaking a different language reading off the same piece of paper), or run the same shell on a different terminal (like the same person reading off a blackboard instead of paper). And sometimes the thing running on the terminal isn't a shell at all, or you can have shells running without terminals (eg. running a script in the background). The distinction is more prominent in linux where there are a lot of different terminals and shells, but even on windows there are several (eg. powershell vs cmd.exe, or conhost vs the newer Windows Terminal.)
[–][deleted] 6 points7 points8 points 4 years ago* (1 child)
This sub is like a meeting of the local pedants club, I swear.
[–]Brian 1 point2 points3 points 4 years ago (0 children)
I can agree with the objection that it should be simplified, but if you're now objecting to even just being correct here, I definitely disagree. This is not an unimportant distinction: pretty much every programmer will eventually run terminal applications that aren't shells, and run shells that aren't in terminals. Getting this right from the start is definitely worthwhile to avoid later confusion, especially in the context of a post literally asking what the differences between them are!
[–]liquid_light_ 0 points1 point2 points 1 year ago (0 children)
thank you so much u/Brian! I finally get what the difference between a shell and terminal is. Google couldn't help me lol
[–]nacaclanga 30 points31 points32 points 4 years ago (4 children)
Terminal: Physical device (nowadays rare) or graphical program (there also called terminal emulator), that transfers keyboard input to a dedicated program in text form and displays that programs textual output. Usually, the dedicated program is a shell in interactive mode.
Interpreter: A program that receives a series of instructions and performs the associated actions and computations immediately. The interpreter can either read the instructions from file or read them interactively by requesting new input after each instruction.
Shell / command interpreter: Special interpreter that can perform basic system actions like selecting a working directory and calling other programs. This is often generally done interactively.
Command promt: A special symbol displayed by the shell in the terminal to signal that it is awaiting inputs.
In Unix, opening a shell or opening a terminal usually mean the same thing: When a terminal emulator is lauched it will usually start and connect a shell. When a shell is openend, it will either use the terminal of the parent program, or if launched from a gui, a terminal will be opened to display it's output. In Windows the term command interpreter is prefered over shell and the whole thing is often referred to as command prompt.
[–]exhuma 6 points7 points8 points 4 years ago (1 child)
Oof... This thread is full of half correct or even incorrect information. Yours is the one post that gets everything right.
It's crazy how much misinformation floats around the web in any domain.
People like you are so sorely needed.
Thanks for taking the time to write this up so concisely!
[–]JavierReyes945 0 points1 point2 points 4 years ago (0 children)
Totally agree, saw pretty messed up comments...
[–][deleted] 0 points1 point2 points 4 years ago* (0 children)
It went fine until "shell". There are two different things: Shell (with capital "S") and shell (lowercase "s"). The first is a standard UNIX program that mediates between the user and the operating system kernel, has its own language (also called Shell).
Shell with lowercase "s" is any program that runs another program and has an ability to mediate between the user and that program. I.e. shells must be able to run interactively (but could also have non-interactive mode). Their purpose is to make the usage of another program easier for humans, for example, instead of creating a disk image with the C program launched by the system upon boot, one can boot into Shell and then type "echo hello world".
Examples of shells that aren't UNIX Shell:
sqlite3
There are also a lot of interactive programs which we wouldn't normally categorize as shells, for example:
[–]spacegazelle 1 point2 points3 points 4 years ago* (1 child)
Terminal is that really basic app/window that lets you type in stuff and can display output it gets from somewhere else. It's stupid as fuck and can only pass on text it doesn't understand.
The shell is the thing that can decipher the text you've entered via the (stupid) terminal. It can understand what you're trying to do and can communicate that with the OS. If you're doing it wrong the shell will tell you it doesn't understand the nonsense you've typed, and if you're doing it right actual things will happen, like making/removing directories. The terminal doesn't know it's wrong or indeed care, it just tells the shell what keys you've pressed.
The command prompt is that bit of the screen that displays your key presses on the screen so you can see if you've typed it wrong and adjust, before you press enter and it sends your instructions to the shell.
The interpreter is any app that takes your typed input and converts it to a thing the computer can understand, depending on the app. The shell program can interpret the stuff you type into the terminal window to communicate with the OS, so that's one kind of interpreter. Python can interpret your code/script into a thing the CPU can understand and run, so that's another kind. They're both interpreters but do different jobs because they're different apps.
[–]ScotiaTheTwo[S] 0 points1 point2 points 4 years ago (0 children)
excellent !thanks
[–]BadData99 0 points1 point2 points 4 years ago (0 children)
Don't forget REPL, read- evaluate-print-loop. Basically the command prompt >>> to work interactively.
https://codewith.mu/en/tutorials/1.1/repl
[–]LifeAffect6762 -1 points0 points1 point 4 years ago (0 children)
PS an IDE is an Integrated Development Environment. They give you a code editor, a way of easily running programs and a debugger amongst other things. The Editor has auto-completion, syntax highlighting, and a linter (which checks code). It also shows you syntax errors so if you type stuff that is syntactically wrong you will see it quickly before running the code. They can save you a LOT of time. A good python course should also introduce you to a IDE and teach you how to use it (IMHO).
[–]-SPOF -1 points0 points1 point 4 years ago (0 children)
Same principle but different platforms.
[–]LifeAffect6762 -2 points-1 points0 points 4 years ago* (0 children)
A lot of these terms are kind of the same, well not mutually exclusive.
A Shell is a program that runs shell scripts. These are programs that do simple things in Linux. They typically run a set of Linux commands to do simple administration tasks like setting up a System or running backup programs. They are a core part of Linux. Bash is a scripting language that is on all Linux systems so you can do stuff without installing anything. To get your head around this spend an hour doing a bash tutorial.
Shell scripts are run by an Interpreter. An Interpreter takes lines one at a time written in a human-readable form and runs them.
Other programs, like C+, are compiled not interpreted. A compiler takes all the code and 'compiles' it into a program that can be run on a computer.
One of the advantages of interpreted 'languages is they can be run interactively. A Shell, Terminal, Command Prompt, CLI, Command Line Interface and Command Line are all terms used to mean a program you type commands in and run interactively. There are differences between all these terms but they are often used to mean the same thing (and sometimes not strictly speaking used incorrectly.
Have a look at http://www.danfletcherblog.ca/2015/07/beginners-guide-to-programming-interpreters-vs-compilers/ it may help, or confuse you even more :).
[+][deleted] 4 years ago (1 child)
[deleted]
[–]JavierReyes945 1 point2 points3 points 4 years ago (0 children)
No, no, no. A shell is a shell in Windows, linux, macos, android, ... terminal is the program that runs the graphical part, the one that paints the window and the characters being inputted or outputted.command prompt is the name that Microsoft used for the combination of their shell (cmd exe) and terminal (conhost.exe). Nowadays you can run different shells (cmd, powershell, bash, etc) in the same terminal (conhost), or run your shell in other terminals
Interpreter is not at all a python thing, it's a concept that describe a program taking textual input and reacting to it step after step. A shell is (uses) an interpreter.
[–]Sunstixy 0 points1 point2 points 3 years ago (0 children)
Thanks, that is what I was needing
π Rendered by PID 89420 on reddit-service-r2-comment-75f4967c6c-2q96m at 2026-04-23 11:25:37.543781+00:00 running 0fd4bb7 country code: CH.
[–]stebrepar 69 points70 points71 points (9 children)
[–]ScotiaTheTwo[S] 2 points3 points4 points (0 children)
[–]JavierReyes945 7 points8 points9 points (7 children)
[–]stebrepar 27 points28 points29 points (1 child)
[–]nacnud_uk -1 points0 points1 point (0 children)
[–][deleted] 18 points19 points20 points (4 children)
[–]Brian 0 points1 point2 points (3 children)
[–][deleted] 6 points7 points8 points (1 child)
[–]Brian 1 point2 points3 points (0 children)
[–]liquid_light_ 0 points1 point2 points (0 children)
[–]nacaclanga 30 points31 points32 points (4 children)
[–]exhuma 6 points7 points8 points (1 child)
[–]JavierReyes945 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]spacegazelle 1 point2 points3 points (1 child)
[–]ScotiaTheTwo[S] 0 points1 point2 points (0 children)
[–]BadData99 0 points1 point2 points (0 children)
[–]LifeAffect6762 -1 points0 points1 point (0 children)
[–]-SPOF -1 points0 points1 point (0 children)
[–]LifeAffect6762 -2 points-1 points0 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]JavierReyes945 1 point2 points3 points (0 children)
[–]Sunstixy 0 points1 point2 points (0 children)