Where apps hide your files
Oh My Zsh installs to the hidden folder ~/.oh-my-zsh, with bundled themes and plugins inside it and your own in custom. Your theme and plugin choices are lines in ~/.zshrc, not files in that folder.
~/.oh-my-zsh
That is where Oh My Zsh installs by default, according to its own README and installer. It is a hidden folder directly in your home folder. The shell variable ZSH holds the path, and the installer writes it into your ~/.zshrc as an export ZSH= line (by default export ZSH="$HOME/.oh-my-zsh"). Two exceptions to the default: the installer uses whatever ZSH is set to when it runs, and if ZDOTDIR points somewhere other than your home folder it uses $ZDOTDIR/ohmyzsh. Check yours with:
echo $ZSH
ls ~/.oh-my-zsh
Oh My Zsh was not installed on the Mac used for this guide, so the layout below comes from the project's own README, installer, oh-my-zsh.sh and wiki rather than from a local listing. Run the ls yourself to see your version.
To open the folder in Finder, use Go > Go to Folder (⇧⌘G) and type ~/.oh-my-zsh, or run open ~/.oh-my-zsh in Terminal.
The bundled themes and plugins are inside that folder, and your own go in a separate custom folder:
| What | Bundled with Oh My Zsh | Your own |
|---|---|---|
| Themes | ~/.oh-my-zsh/themes/<name>.zsh-theme | ~/.oh-my-zsh/custom/themes/<name>.zsh-theme |
| Plugins | ~/.oh-my-zsh/plugins/<name>/<name>.plugin.zsh | ~/.oh-my-zsh/custom/plugins/<name>/<name>.plugin.zsh |
| Extra scripts | not applicable | any .zsh file in ~/.oh-my-zsh/custom/ |
The loading code in oh-my-zsh.sh checks $ZSH_CUSTOM first and then $ZSH, so a copy of a theme or plugin in custom wins over the bundled one with the same name. For themes it also accepts a .zsh-theme file placed directly in custom/. ZSH_CUSTOM defaults to $ZSH/custom, and you can point it at another folder by setting it in ~/.zshrc, as long as the same structure is kept inside.
The README says that to override default behaviour you add a new file ending in .zsh to the custom/ folder, and custom plugins go in custom/plugins/.
Both settings are lines in ~/.zshrc, not files in the Oh My Zsh folder. The template the installer uses sets:
ZSH_THEME="robbyrussell"
plugins=(git)
To change theme, set ZSH_THEME to the file name without .zsh-theme. To add plugins, list their folder names inside the parentheses, separated by spaces. The README warns that commas break it. Back up ~/.zshrc before editing it:
cp ~/.zshrc ~/.zshrc.backupsource ~/.zshrc, and check the prompt or plugin works.cp ~/.zshrc.backup ~/.zshrc.For a theme from a project that is a single file, save it as ~/.oh-my-zsh/custom/themes/<name>.zsh-theme and set ZSH_THEME="<name>". For a theme that comes as a folder, the lookup code tests for <theme>.zsh-theme under custom/themes, so a folder entry is written as folder/name: read the theme's own install instructions for the exact line. A plugin goes in custom/plugins/<name>/ and its main file must end in .plugin.zsh. Then add the name to plugins=(...).
To tweak a bundled theme without editing it, the wiki says to copy it into custom/themes under the same file name and edit the copy. The installer sets ~/.oh-my-zsh up as a Git clone, so changes made directly inside themes can clash with omz update; the copy in custom avoids that.
~/.zshrc, written by the installer from its template.~/.zshrc.pre-oh-my-zsh, your previous .zshrc, saved by the installer if one existed.~/.shell.pre-oh-my-zsh, your previous shell, saved before the installer offers to switch you to zsh. If your shell is already zsh, as it is by default on a Mac, the installer skips that step and this file is not created.~/.zcompdump-<host>-<zsh version>, the completion cache. This is the default from oh-my-zsh.sh, in your home folder unless ZDOTDIR is set.$ZSH/cache by default, falling back to ~/.cache/oh-my-zsh if that is not writable.Oh My Zsh updates itself with:
omz update
To remove it, the README gives the command uninstall_oh_my_zsh. Copy ~/.oh-my-zsh/custom somewhere first if you want to keep your own themes and plugins. The script then works in this order:
~/.shell.pre-oh-my-zsh exists, it switches your login shell back with chsh straight away, before any question.~/.oh-my-zsh with rm -rf, including anything you put in custom/. It uses that exact path, so an install in a custom folder is left for you to move to the Trash.The script renames your current ~/.zshrc with a timestamp, to ~/.zshrc.omz-uninstalled- followed by the date and time, and moves ~/.zshrc.pre-oh-my-zsh back to ~/.zshrc if it exists. If it does not, you end up with no ~/.zshrc at all, and your own edits are in the renamed file.
Reinstall Oh My Zsh with the official installer instead of copying ~/.oh-my-zsh, then copy over ~/.zshrc and your custom folder. Git-based plugins you cloned into custom/plugins need cloning again or copying.
~/.oh-my-zsh starts with a dot, so Finder and Spotlight searches leave it out, and the theme files have an unusual .zsh-theme extension that nobody thinks to type.
Type zsh-theme into Everywhere to list every theme file on the Mac, bundled and custom, with their folders, or type a theme's name such as agnoster. Typing .plugin.zsh does the same for plugins, and zshrc finds your config and its backups. Hidden dot-folders in your home folder are part of what it scans, and it matches file names only, not the settings inside them. ⌘↵ reveals a result in Finder.
In ~/.oh-my-zsh, a hidden folder in your home folder. The ZSH variable in ~/.zshrc holds the path, so echo $ZSH shows it.
Bundled themes are in ~/.oh-my-zsh/themes as .zsh-theme files, and your own go in ~/.oh-my-zsh/custom/themes. Pick one with ZSH_THEME in ~/.zshrc.
In ~/.oh-my-zsh/custom/plugins/<name>/, with a main file named <name>.plugin.zsh. Then add the name to plugins=(...) in ~/.zshrc.
Run uninstall_oh_my_zsh and confirm. It deletes ~/.oh-my-zsh, including your custom folder, so copy that first, and it renames your ~/.zshrc and restores ~/.zshrc.pre-oh-my-zsh if one exists.
Everywhere keeps track of every file on your Mac — including the folders Spotlight hides and drives you have unplugged. Free for a day, then $19 once.
Version 2.20.3 · macOS 13+ · 4.7 MB · notarised