Install zsh and oh-my-zsh for shell hacks

Why install zsh

The default shell on most Linux systems is bash. While bash is nice, in its vanilla state, you can't get a ton of information at a glance. For example, your bash shell might not be configured by default to:

  • Show the current working directory
  • Show the status of the Git repository
  • Show the time you executed the last command you were running
  • Show the hostname of the machine you're on (especially useful if you work on a remote machine and locally at the same time).

To illustrate, at a vanilla bash shell, you usually are given:

username@hostname $

With some of the zsh themes, with minimal configuration, you get a shell that looks like this:

username@hostname at /path/to/current/dir (yyyy-mm-dd hh:ss) [+] $

The [+] at the end gives us the Git status of a directory that is also a Git repository.

The Z-shell, or zsh, as well as other shells like the fish shell, are alternative shells that use Bash-compatible syntax to interact with them, but come pre-configured with themes that you can apply. The zsh is especially handy for this.

Of course, fancier bash prompts are one thing, but each shell comes with its own set of cool tooling to enhance your productivity at the terminal.

How do I install zsh and oh-my-zsh

If you're on a fresh install of the latest versions of macOS, the zsh is already your default shell. You probably want to then install oh-my-zsh. Follow instructions on the project's webpage. Then, pick one of the themes that you like, and configure your shell that way.

Configure your machine

After getting access to your development machine, you'll want to configure it and take full control over how it works. Backing the following steps are a core set of ideas:

  • Give yourself a rich set of commonly necessary tooling right from the beginning, but without the bloat that might be unnecessary.
  • Standardize your compute environment for maximal portability from computer to computer.
  • Build up automation to get you up and running as fast as possible.
  • Have full control over your system, such that you know as much about your configuration as possible.
  • Squeeze as much productivity out of your UI as possible.

Head over to the following pages to see how you can get things going.

Initial setup

Getting Anaconda Python installed

Master the shell

Further configuration

Advanced Stuff