There is often confusion among Linux beginners about a lot of the technologies and terminologies that Linux veterans might refer to in the forums around the internet. This is can be an problem because forums are often the only way to get support with an issue a user might be facing on their PC.
Distro is short for distribution. Distributions are collections of packages, and configuration that combine to make a usable operating system. The differences in distributions comes down to the default applications, and configuration that they ship with. Otherwise, almost everything can be replicated on most other distributions. Often when someone is considering trying out a Linux operating system, they start with a search for best distributions for their use case. But that kind of a search often leads to a fringe OS that may not have an active community or a great support system. I’ll explore better questions to ask in a future post.
The Kernel is the core of the whole operating system. All operating systems, including Windows, and macOS, have a kernel. People widely confuse Linux as the operating system itself. A distribution is synonymous with operating system. The kernel provides vital low level functionality like hardware drivers, CPU scheduling, and memory management.
Desktop environments are a sub-set of distribution components that create a usable WIMP environment. Examples of desktop environments are Gnome, KDE, or XFCE. There are of course more desktops environments in the Linux world. And more are being developed every day. Most popular distributions customize or ship the vanilla version of these desktop environments to provide a complete OS experience.
Window Manager/Display Server
The window manager can either be a component of the desktop environment or individually installed in a system. It does exactly what it says. It manages everything to do with windows. Drawing, placement, resizing, updates, etc are all part of the window manager functionality. Gnome’s Mutter, and KDE’s KWin are examples of window managers/display servers. An example of an individual window manager is i3.
A display manager is responsible for showing the login screen and allowing the user to login. Display manager can be confused with window managers. Some examples of display managers are, GDM (Gnome Display Manager), SDDM (Simple Desktop Display Manager), or LightDM.
A script is simple a file of code that a user can execute. Scripts are very powerful and can do everything from install a program to ruin your entire system. Many fixes proposed in the various distributions forums out there ask the user to run a script to solve a problem. This is very problematic in a couple of ways. The user has may have no idea what the script does or they might lack the knowledge to properly evaluate the script code. And the script itself could be malicious. If a solution to a problem requires a script, be very careful when you run it. Make sure to have a backup.
These scripts are run inside of a shell most commonly using a CLI. We’ll discuss these in the next sections.
CLI stands for command line interface. This is the command prompt that was common during the old DOS days. And this is still very common today on Linux based operating systems. Programs written for the CLI are generally considered to be for the advance users. Except they are just like any other program, they just require typing out the command to interact with them. In-fact these programs can be much more powerful because of the way Linux/Unix CLI works. These programs are largely designed to work together. The output of one command can be fed as the input for another. This method can be used to chain many commands together to create a pipeline. These pipelines are the real power of the CLI.
The shell is the environment in which programs are run. There are graphical shells like Gnome. There are also CLI shells like BASH, Zsh, or Tcsh. These environments can provide vastly different features and properties for the user. Even in the CLI, where these is just a simple text prompt, can provide various completion, listing, colouring, and display features. BASH is the most common CLI shell used in Linux distributions and Gnome is the most common GUI shell.