# Oh My Zsh

> Community-maintained framework for managing zsh configuration, with 300+ plugins, 140+ themes, and a built-in updater.

Stars: 190.2k · Language: Shell · License: MIT · Categories: Shell

- Repository: https://github.com/ohmyzsh/ohmyzsh
- Website: https://ohmyz.sh
- Page: https://www.trmn.sh/tools/ohmyzsh

## Install

- curl: `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"`
- wget: `sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"`
- curl (mirror): `sh -c "$(curl -fsSL https://install.ohmyz.sh/)"`

## Overview

Oh My Zsh is an open source framework for managing zsh configuration. It installs into ~/.oh-my-zsh (configurable via the ZSH environment variable) and generates a new ~/.zshrc, renaming any existing one to .zshrc.pre-oh-my-zsh. Plugins and themes are enabled by editing that file.

Functionality is split into plugins and themes. Plugins live in the repository's plugins directory and are listed in a plugins=(...) array in .zshrc, for example git, bundler, dotenv, macos, rake, rbenv and ruby. Each built-in plugin has its own README documenting the aliases and helper functions it adds. Themes control only the prompt appearance and are selected with ZSH_THEME (default "robbyrussell", alternatives such as "agnoster"). Setting ZSH_THEME="random" picks a theme per terminal session, and ZSH_THEME_RANDOM_CANDIDATES and ZSH_THEME_RANDOM_IGNORED restrict or exclude choices. Many themes need a Powerline or Nerd Font to render correctly.

The installer supports an --unattended flag for automated setups, which skips changing the default shell and does not launch zsh. It also supports a custom install directory, installing from a forked repository, manual installation, and a mirror at install.ohmyz.sh for regions that block raw.githubusercontent.com. The README also covers update handling, skipping aliases, enabling GNU ls on macOS and FreeBSD, an async git prompt, custom plugins and themes, and uninstalling. It targets zsh users on Linux, macOS, FreeBSD, Android and Windows via WSL2. It requires zsh (5.0.8 or newer preferred), git and curl or wget.

### Installation

```bash
# via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

```bash
# via wget
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

```bash
# via curl (mirror)
sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
```

![Agnoster theme in Oh My Zsh](https://media.trmn.sh/cached/e3acca7b732d918ecac582b4c9beb39f747fdc56f426f249e610f9b9cb4f46f0.png)

## Alternatives

- [Powerlevel10k](https://www.trmn.sh/tools/powerlevel10k.md): Zsh prompt theme with an interactive configuration wizard, instant prompt at shell startup, Git status segments, and Powerlevel9k config compatibility. (Shell, 55.3k stars)
- [zsh-autosuggestions](https://www.trmn.sh/tools/zsh-autosuggestions.md): Zsh plugin that shows inline command suggestions after the cursor, drawn from history and tab-completion, in the style of Fish. (Shell, 36.2k stars)
- [Spaceship Prompt](https://www.trmn.sh/tools/spaceship-prompt.md): Customizable Zsh prompt that shows Git/Mercurial status, language runtime versions, Docker, Kubernetes, battery and more, with support for custom sections. (Shell, 20.6k stars)
- [tpm](https://www.trmn.sh/tools/tpm.md): Tmux Plugin Manager: installs, updates, and removes tmux plugins from GitHub or other git repositories, configured via ~/.tmux.conf. (Shell, 15.1k stars)
- [Pure](https://www.trmn.sh/tools/pure.md): ZSH prompt that shows git branch, dirty state, and async-checked unpushed/unpulled arrows, with exit-status coloring and command execution time. (Shell, 14.5k stars)

---

Canonical: https://www.trmn.sh/tools/ohmyzsh
