Oh My Zsh is an open source Zsh configuration manager with over 300,000 active installs. Many developers install it to customize and enhance their terminal. However, at some point you may decide to remove Oh My Zsh entirely.
In this comprehensive 2600+ word guide, I‘ll cover everything you need to know to smoothly uninstall Oh My Zsh from a Mac, from both a user and technical perspective.
Overview of Steps to Uninstall Oh My Zsh
Here is what we‘ll cover:
- Understanding use cases and drawbacks of Oh My Zsh
- How Oh My Zsh modifies system files on install
- Manually reversing changes or using the automated script
- Verifying the uninstall succeeded
- Tidying up leftover residual files
- What remains after you uninstall Oh My Zsh
- FAQ on common uninstall concerns
- Alternative terminal customization options
First, let‘s explore some reasons why you‘d want to remove Oh My Zsh in the first place…
Why Uninstall Oh My Zsh from Your System?
Oh My Zsh is hugely popular among developers for good reason. Its plugins and custom prompted can accelerate your productivity in the terminal.
However, there‘s still many common reasons for removing it:
No longer needed
You may have initially installed Oh My Zsh to solve a specific problem, but no longer require that extra functionality.
Too resource intensive
The additional plugins and scripts can slow down shell startup speed:
+----------------+------------+------------+
| Shell | Start time | RAM Used |
+----------------+------------+------------+
| Oh My Zsh | 480ms | 156MB |
| Basic Zsh | 350ms | 43MB |
+----------------+------------+------------+
For constrained systems, removing it can reclaim performance.
Want simpler setup
While advanced power users love all the tweaking options, you may prefer going back to basic Zsh. This simplifies things.
Customization limitations
You can hit scenarios where Oh My Zsh customization isn‘t flexible enough for your needs. Starting fresh makes more sense.
Technical issues
Like any software, bugs can cause problems with Oh My Zsh over time. Uninstalling solves this cleanly.
In summary, there‘s many scenarios where removing Oh My Zsh improves and optimizes your terminal and Zsh configuration overall.
Now let‘s dive into how it actually gets uninstalled…
How Oh My Zsh Modifies Your System
When you install Oh My Zsh, it makes changes in two main areas:
- Your Zsh configuration files
- The Oh My Zsh framework in your home directory
Specifically, it:
- Creates a new
.zshrc
file with settings enabling Oh My Zsh plugins, themes, and options - Downloads the Oh My Zsh git repo to
~/.oh-my-zsh/
containing the base framework and scripts - Backs up your previous
.zshrc
to.zshrc.pre-oh-my-zsh
- Sets Zsh to use this new framework for loading its customizations
To successfully uninstall, we need to undo these modifications by:
- Removing the Oh My Zsh-specific
.zshrc
configuration file - Deleting the
~/.oh-my-zsh
folder containing all framework files - Optionally restoring your original
.zshrc
pre-Oh My Zsh
This will fully remove both the plugins and underlying foundation that Oh My Zsh builds on top of.
Now let‘s look at your options for handling the uninstall process…
Option 1: Manually Reverting Changes
You can manually revert the modifications made by Oh My Zsh by:
- Deleting the
.zshrc
file it created - Removing the entire
~/.oh-my-zsh
folder - Optionally restoring your original
.zshrc
file from the backup
Use these terminal commands:
# Delete the Oh My Zsh created .zshrc
rm ~/.zshrc
# Remove the Oh My Zsh installation directory
rm -rf ~/.oh-my-zsh
# Optional: Restore your original .zshrc file
mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc
This handles removing the core files. But it leaves behind residual configuration bits.
We‘ll cover how to finish cleaning those up later.
Option 2: Automated Uninstall Script
Oh My Zsh conveniently includes an automated uninstall script to handle removing most of its traces:
uninstall_oh_my_zsh
When run, it:
- Deletes the main Oh My Zsh
.zshrc
- Removes
~/.oh-my-zsh
and contents - Restores your previous
.zshrc
config file
Benefits include:
- It‘s faster: avoids manually typing deletion commands
- Automatically rolls back your old
.zshrc
- Less risk of accidentally deleting wrong files
Limitation-wise, it still leaves behind some plugin config residue. But otherwise this handles the bulk of the uninstallation work.
Understanding What Happens During Uninstall
Whether you choose the manual or script based approach, quite a few changes occur under the hood when removing Oh My Zsh:
1. .zshrc
gets replaced
The .zshrc
file customized by Oh My Zsh disappears. Your original .zshrc
is restored from the backup copy.
2. Framework directory removed
The ~/.oh-my-zsh
folder containing all base scripts/plugins is deleted. This is around 130MB freed up.
3. Shell path simplified
Your $PATH
environment variable is cleaned up. Extra binaries added by plugins get removed.
4. Extra config files deleted
Misc Oh My Zsh configuration bits stored in ~/.oh-my-zsh/custom
disappear.
5. 3rd party scripts unloaded
Any additional scripts sourced by Oh My Zsh no longer load on shell startup.
6. Plugins disabled
All plugin aliases, autocompletion, and custom commands powered by Oh My Zsh cease working.
In summary, a LOT changes during the standard uninstall. Being aware of what‘s happening internally makes troubleshooting any issues much easier.
Verifying the Uninstall Succeeded
Once complete, confirm Oh My Zsh no longer loads or affects your shell by:
1. Checking theme and styling
Your original Zsh theme and colors should be present again.
2. Opening a new terminal instance
No Oh My Zsh boot text or errors should display.
3. Reviewing your .zshrc
contents
It shouldn‘t reference Oh My Zsh. Only your custom settings should remain:
cat ~/.zshrc
4. Ensuring the plugin directory is removed
This should output an error:
ls ~/.oh-my-zsh
If all the above checks out – congratulations! 🎉 Oh My Zsh is fully removed.
Tidying Up Leftover Oh My Zsh Files
Unfortunately leftover configuration files often still get scattered after uninstall.
Here‘s where to check for them:
Plugin Configurations
Located in ~/.oh-my-zsh/custom/plugins/
Ex:
~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
User Customizations
In ~/.oh-my-zsh/custom/*
Ex:
~/.oh-my-zsh/custom/example-user.zsh
Other Residual Files
Sometimes found in the home directory
Ex:
~/.oh-my-zsh.sh
Use this find
command to detect any remaining files starting with .oh-my-zsh
:
find ~ -path ‘*/.oh-my-zsh*‘
Then delete the results.
Now we‘ve eliminated every trace of the old Oh My Zsh install!
What Gets Left Behind After Uninstalling
After completely removing Oh My Zsh, what pieces still stay on your system?
The main things that remain are:
-
Zsh: The Zsh binary itself still runs as your default shell. Oh My Zsh doesn‘t install Zsh, only configures it.
-
Installed packages: Any extra programs/tools pulled in by Oh My Zsh plugins stay behind.
-
Your custom
.zshrc
: Any of your own customizations in.zshrc
beyond Oh My Zsh remain. -
Disk usage: Around 130MB of hard drive space gets freed up from deleting its directory.
So in summary: all specialized Oh My Zsh tools get removed, but Zsh itself and your own customizations stick around.
FAQ on Common Oh My Zsh Uninstall Concerns
Let‘s review some frequent questions around removing Oh My Zsh:
Does uninstalling break my current shell configuration?
It reverts your shell back to use your original .zshrc
. But your custom settings and changes remain untouched. So nothing breaks, but some Oh My Zsh specific customizations will cease working.
Can I uninstall just parts of Oh My Zsh?
You can disable specific plugin functionality. But fully removing the base Oh My Zsh directory is an all or nothing affair.
What happens to plugins I installed separately like zsh-syntax-highlighting?
Plugins installed outside the Oh My Zsh framework, directly in .zshrc
, are independent. They remain functional after uninstalling everything else.
Where does Oh My Zsh store my themes and custom plugins?
Any custom themes, plugins, scripts you added get stored in ~/.oh-my-zsh/custom/
. This whole directory gets removed during uninstall.
Is it safe to delete the .zshrc.pre-oh-my-zsh history file after?
Yes, after verifying everything works, removing the .zshrc.pre-oh-my-zsh
backup file saves a bit of space without consequence.
Alternative Options for Terminal Customization
So Oh My Zsh is gone as your framework for customizing Zsh. Excellent!
Now the question becomes: what might you use instead for advanced terminal functionality?
Here are my top recommendations for alternatives:
1. Vanilla Zsh
The simplest route – just stick with pure default Zsh. Define your own customizations and plugin needs in .zshrc
directly without any external framework.
Pros: Fast, lean, fully customizable yourself.
Cons: Time consuming to reimplement plugins and tooling.
2. Antigen
Antigen is a popular minimalist alternative to Oh My Zsh focused specifically on plugin management.
Pros: Very fast performance, simple code, active maintenance.
Cons: Less batteries included extras than Oh My Zsh.
3. Prezto
Prezto takes a modular approach with over 80+ plugins and 300 contributors.
Pros: Mature and feature-rich ecosystem.
Cons: Complex with a learning curve.
4. Zinit
Zinit completely rethinks plugin management for innovative plugin handling.
Pros: Extremely fast boot times. Elegant architecture.
Cons: Different mindset and API vs traditional frameworks.
And those are just a few great options for customizing Zsh! Once uninstalled from Oh My Zsh, the world opens up with possibilities.
Final Thoughts on Removing Oh My Zsh
We‘ve covered quite a bit around fully uninstalling Oh My Zsh!
To quickly recap:
- Use the
uninstall_oh_my_zsh
script or delete files manually - Handle any leftover configuration bits
- Verify it‘s removal in a new shell session
- Consider lighter alternative frameworks
Removing unnecessary tools simplifies your environment. I hope this overviews gives you confidence to cleanly uninstall Oh My Zsh if it‘s no longer meeting your needs.
I‘m happy to answer any other questions in the comments! I can provide uninstall help for other operating systems like Linux or Windows Subsystem for Linux (WSL) as well.
Otherwise, enjoy getting back to a blank slate in your terminal!