Josh Medeski Memoji Josh Medeski

Menu

What is the terminal?

Dotfiles

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.

Categories

These are a few of my favorite things.

Dotfiles

My developer environment

Development

How I build websites and apps

Desk Setup

The space that helps me create

Productivity

How I get things done

Personal Development

Creating a meaningful life

Stay up to date

Get updates on my latest content on web development, vim, macOS, working from home, productivity, and more.

Sign up to my newsletter