diff --git a/tools/install.sh b/tools/install.sh index 8cf62a76e..bcf5f67fc 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -341,6 +341,11 @@ setup_zshrc() { # Skip this if the user doesn't want to replace an existing .zshrc if [ "$KEEP_ZSHRC" = yes ]; then echo "${FMT_YELLOW}Found ${zdot}/.zshrc.${FMT_RESET} ${FMT_GREEN}Keeping...${FMT_RESET}" + # Still create a backup for uninstall safety, but don't overwrite the existing .zshrc + if [ ! -e "$OLD_ZSHRC" ]; then + echo "${FMT_GREEN}Creating backup at ${OLD_ZSHRC} for safe uninstall${FMT_RESET}" + cp "$zdot/.zshrc" "$OLD_ZSHRC" + fi return fi diff --git a/tools/uninstall.sh b/tools/uninstall.sh index 6e3df7aca..5c82666b1 100644 --- a/tools/uninstall.sh +++ b/tools/uninstall.sh @@ -35,6 +35,19 @@ if [ -e "$ZSHRC_ORIG" ]; then 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."