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.
Or use the