So what actually the Shell is?

The Shell is the “program” that runs on the server side that provides the command-line interface between the user and the operating system.

It’s the program that reads, interprets and run the commands that you type when you connect to a server.

The shell interprets the commands you enter and some of them are “executed” by the shell itself, and others are passed to the operating system to be executed by a program.

Different shells exist — some are mostly historical, while others are still widely used today. The most common ones are bash and zsh. zsh is especially popular among power users and developers 😉

On Linux, every user can choose which shell they want to use as their default login shell.

🧠 Why are there different shells?

Because over time, developers built new shells with more features, better scripting, customization, performance, or user experience — just like how web browsers or text editors evolved.

Each shell aims to:

  • Improve on limitations of older shells
  • Add scripting capabilities
  • Provide better interactivity (autocomplete, colors, plugins, etc.)
  • Cater to specific use cases (like scripting vs. interactive use)