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.
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).
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
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.
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
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!
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.