OSs 1 act as the intermediary between a User / Application, and the underlying hardware.
Some distinctions can be made about different OSs:
glibc is the GNU C Library, and is the GNU implementation of the C standard library. It is used in most Linux distributions.
You might have any of the following:
For windows / non-POSIX compliant systems, consider:
The Portable Operating System Interface (POSIX) attempts to unify and standardize across different operating systesms, but it is up to the implementation as to what is supported.
Okay, so we have an Operating Systems with a glibc version, but how do we interact with the system?
We use a unix shell for this, which provides a Command Line Interface (CLI) to the OS. This is both an interactive command tool, as well as a scripting tool.
You have a few different options when picking a shell:
A terminal emulator, or terminal application, is a program that emulates a video terminal within some other display architecture.
Here are some example terminal emulators:

Since each shell deals with configuration files slightly differently, this can become overwhelming to discuss. For this workshop, we will just be talking about bash from now on. Key configuration files in bash:
~/.bashrc~/.bash_profileTaking iTerm2 as an example, you can customize the following:
In something like alacritty, these are configured by a single alacritty.toml file.
But what about the terminal prompt? We can modify PROMPT_COMMAND and PS1 in our init file…
Nice Beach Terminal
Terrible Webdings Terminal
Cute Cat Terminal
For all the shells mentioned, there are tools that help you manage your prompt themes:



While you can use your terminal emulator to manage your windows, you can also use tmux to manage your windows.
