if hash chsh >/dev/null 2>&1 && [ -f ~/.shell.pre-oh-my-zsh ]; then old_shell=$(cat ~/.shell.pre-oh-my-zsh) echo "Switching your shell back to '$old_shell':" if chsh -s "$old_shell"; then rm -f ~/.shell.pre-oh-my-zsh else echo "Could not change default shell. Change it manually by running chsh" echo "or editing the /etc/passwd file." exit fi fi read -r -p "Are you sure you want to remove Oh My Zsh? [y/N] " confirmation if [ "$confirmation" != y ] && [ "$confirmation" != Y ]; then echo "Uninstall cancelled" exit fi echo "Removing ~/.oh-my-zsh" if [ -d ~/.oh-my-zsh ]; then rm -rf ~/.oh-my-zsh fi if [ -e ~/.zshrc ]; then ZSHRC_SAVE=~/.zshrc.omz-uninstalled-$(date +%Y-%m-%d_%H-%M-%S) echo "Found ~/.zshrc -- Renaming to ${ZSHRC_SAVE}" mv ~/.zshrc "${ZSHRC_SAVE}" fi echo "Looking for original zsh config..." ZSHRC_ORIG=~/.zshrc.pre-oh-my-zsh if [ -e "$ZSHRC_ORIG" ]; then echo "Found $ZSHRC_ORIG -- Restoring to ~/.zshrc" mv "$ZSHRC_ORIG" ~/.zshrc echo "Your original zsh config was restored." else echo "No original zsh config found" # Check if we have a backup from this uninstall session if [ -e ~/.zshrc.omz-uninstalled-* ]; then echo "However, your .zshrc was backed up during this uninstall." echo "Restoring it automatically..." # Find the most recent backup and restore it LATEST_BACKUP=$(ls -t ~/.zshrc.omz-uninstalled-* 2>/dev/null | head -1) if [ -n "$LATEST_BACKUP" ]; then mv "$LATEST_BACKUP" ~/.zshrc echo "Your .zshrc has been restored from backup." fi else echo "No backup found. You may need to recreate your .zshrc configuration." fi fi echo "Thanks for trying out Oh My Zsh. It's been uninstalled." echo "Don't forget to restart your terminal!"