What is the terminal? hero

What is the terminal?

Terminology related to the terminal are often misinterpreted. The terminal is kind of a scary thing for some people. So I want to demystify how it works and break down the different terms.

Terminal App

A terminal application is a computer program that emulates the terminal environment on your computer. Every operating system comes with a built-in terminal application, but there are many third-party applications that can be found online (both open-source and paid).

Shell Environment

Next, the shell is an environment to interact with your computer. There are multiple shell environments to choose from, but they all have a base set of commands (like cd, ls, and pwd) that allows you to interact with your computer at a lower-level.

The most basic shell environment is sh and the most common is bash. In recent years, Apple decided to make zsh their default shell and I, personally, use one called fish. Each one offers different features and each can be customized in different ways.

If your not sure which shell environment you are using, running echo $SHELL will output your shell.

Extending Functionality

Once you have chosen and setup your shell environment, you can continue to extend the functionality of your terminal by adding third-party scripts called binaries. For example, fzf a fuzzy finder CLI (command-line interface). To install it, I recommend the homebrew package manager for macOS (brew install fzf).

Once installed, the fzf binary (which is a file) is stored to your path. The path is a set of directories for your shell environment to look for files that can run. This is defined in your shell environment and tools downloaded from brew are typically stored at /opt/homebrew/bin. There are also many binaries pre-installed on your computer (beyond zsh) in /usr/sbin.

The most important thing to know is that these scripts that your run have full access to your computer, so make sure to download them responsibly!

Closing Thoughts

Binaries or we can use third party package tools like home brew to install additional binaries onto our computer. I hope all of this makes sense. Let’s chat for a second.

I think the terminal is an interesting and exciting environment to do, complex things. You can automate your life in a lot of ways with this. Most importantly, as a programmer, you can develop and extend it. I recommend you ease into it, and take it one step at a time.

So that’s the terminal. Feel free to head to YouTube and leave a comment if you have any questions.

Sign-Up for New Posts

Stay in the loop and get the latest blog posts about dotfiles sent to your inbox.

man sitting at desk in front of a landscape of rivers leading to a mountain range

Dev Workflow Intro

Your guide to creating a powerful and intuitive development workflow in the terminal.

The terminal is a powerful tool for developers, but it can be overwhelming to know where to start. This guide will help you create a powerful development environment in the terminal. Here are some of the things you'll learn.

  • Install packages and keep them up-to-date
  • Design a minimalist, distraction-free, user-interface
  • Use familiar keyboard shortcuts
  • Manage multiple projects with ease
  • Integrate with Git and GitHub
Get Started