Skip to content

Instantly share code, notes, and snippets.

@tarikbc
Created January 6, 2026 00:52
Show Gist options
  • Select an option

  • Save tarikbc/4d8837d5d0c76549dbb27d46052978d6 to your computer and use it in GitHub Desktop.

Select an option

Save tarikbc/4d8837d5d0c76549dbb27d46052978d6 to your computer and use it in GitHub Desktop.
Creates another instance of cursor so you can have multiple accounts
#!/bin/bash
# Script to clone a Cursor instance with separate profile
# Usage: ./clone-cursor-instance.sh <instance_name>
# Example: ./clone-cursor-instance.sh personal
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Check if instance name is provided
if [ -z "$1" ]; then
echo -e "${RED}Error: Instance name required${NC}"
echo "Usage: $0 <instance_name>"
echo "Example: $0 personal"
exit 1
fi
INSTANCE_NAME="$1"
APP_NAME="Cursor_${INSTANCE_NAME}.app"
PROFILE_DIR="$HOME/.cursor-profile-${INSTANCE_NAME}"
ALIAS_NAME="cursor${INSTANCE_NAME}"
LAUNCH_SCRIPT="$HOME/launch-cursor-${INSTANCE_NAME}.sh"
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}Cursor Instance Cloner${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "Instance name: ${GREEN}${INSTANCE_NAME}${NC}"
echo -e "App name: ${GREEN}${APP_NAME}${NC}"
echo -e "Profile directory: ${GREEN}${PROFILE_DIR}${NC}"
echo -e "Alias: ${GREEN}${ALIAS_NAME}${NC}"
echo ""
# Step 1: Check if original Cursor.app exists
echo -e "${YELLOW}[1/7]${NC} Checking for Cursor.app..."
if [ ! -d "/Applications/Cursor.app" ]; then
echo -e "${RED}Error: /Applications/Cursor.app not found${NC}"
exit 1
fi
echo -e "${GREEN}✓${NC} Found Cursor.app"
# Step 2: Duplicate the application
echo -e "${YELLOW}[2/7]${NC} Duplicating Cursor.app to ${APP_NAME}..."
if [ -d "/Applications/${APP_NAME}" ]; then
echo -e "${YELLOW}Warning: ${APP_NAME} already exists. Skipping duplication.${NC}"
else
cp -R "/Applications/Cursor.app" "/Applications/${APP_NAME}"
echo -e "${GREEN}✓${NC} Application duplicated"
fi
# Step 3: Create profile directories
echo -e "${YELLOW}[3/7]${NC} Creating profile directories..."
mkdir -p "${PROFILE_DIR}/User"
mkdir -p "${PROFILE_DIR}/extensions"
echo -e "${GREEN}✓${NC} Profile directories created"
# Step 4: Copy existing settings (optional)
echo -e "${YELLOW}[4/7]${NC} Copying existing Cursor settings..."
if [ -d "$HOME/Library/Application Support/Cursor/User" ]; then
cp -R "$HOME/Library/Application Support/Cursor/User/"* "${PROFILE_DIR}/User/" 2>/dev/null || true
echo -e "${GREEN}✓${NC} Settings copied"
else
echo -e "${YELLOW}⚠${NC} No existing settings found (fresh installation)"
fi
# Step 5: Create launch script
echo -e "${YELLOW}[5/7]${NC} Creating launch script..."
cat > "${LAUNCH_SCRIPT}" << EOF
#!/bin/bash
/Applications/${APP_NAME}/Contents/MacOS/Cursor --user-data-dir=\$HOME/.cursor-profile-${INSTANCE_NAME} --extensions-dir=\$HOME/.cursor-profile-${INSTANCE_NAME}/extensions
EOF
chmod +x "${LAUNCH_SCRIPT}"
echo -e "${GREEN}✓${NC} Launch script created: ${LAUNCH_SCRIPT}"
# Step 6: Add alias to shell config
echo -e "${YELLOW}[6/7]${NC} Adding alias to shell configuration..."
ALIAS_LINE="alias ${ALIAS_NAME}='/Applications/${APP_NAME}/Contents/MacOS/Cursor --user-data-dir=\$HOME/.cursor-profile-${INSTANCE_NAME} --extensions-dir=\$HOME/.cursor-profile-${INSTANCE_NAME}/extensions'"
# Detect shell and config file
SHELL_CONFIG=""
SHELL_NAME=""
if [ -n "$ZSH_VERSION" ]; then
SHELL_CONFIG="$HOME/.zshrc"
SHELL_NAME="zsh"
elif [ -n "$BASH_VERSION" ]; then
# Check for .bash_profile, .bashrc, or .profile
if [ -f "$HOME/.bash_profile" ]; then
SHELL_CONFIG="$HOME/.bash_profile"
elif [ -f "$HOME/.bashrc" ]; then
SHELL_CONFIG="$HOME/.bashrc"
else
SHELL_CONFIG="$HOME/.profile"
fi
SHELL_NAME="bash"
else
# Fallback: detect from $SHELL environment variable
case "$SHELL" in
*/zsh)
SHELL_CONFIG="$HOME/.zshrc"
SHELL_NAME="zsh"
;;
*/bash)
if [ -f "$HOME/.bash_profile" ]; then
SHELL_CONFIG="$HOME/.bash_profile"
elif [ -f "$HOME/.bashrc" ]; then
SHELL_CONFIG="$HOME/.bashrc"
else
SHELL_CONFIG="$HOME/.profile"
fi
SHELL_NAME="bash"
;;
*/fish)
SHELL_CONFIG="$HOME/.config/fish/config.fish"
SHELL_NAME="fish"
;;
*)
SHELL_CONFIG="$HOME/.profile"
SHELL_NAME="unknown"
;;
esac
fi
echo -e "Detected shell: ${GREEN}${SHELL_NAME}${NC}"
echo -e "Config file: ${GREEN}${SHELL_CONFIG}${NC}"
# Add alias to config file
if grep -q "alias ${ALIAS_NAME}=" "${SHELL_CONFIG}" 2>/dev/null; then
echo -e "${YELLOW}⚠${NC} Alias '${ALIAS_NAME}' already exists in ${SHELL_CONFIG}"
else
# Create config file if it doesn't exist
touch "${SHELL_CONFIG}"
echo "" >> "${SHELL_CONFIG}"
echo "# Cursor ${INSTANCE_NAME} instance alias" >> "${SHELL_CONFIG}"
# Fish shell uses different syntax
if [ "$SHELL_NAME" = "fish" ]; then
mkdir -p "$HOME/.config/fish"
echo "alias ${ALIAS_NAME} '/Applications/${APP_NAME}/Contents/MacOS/Cursor --user-data-dir=\$HOME/.cursor-profile-${INSTANCE_NAME} --extensions-dir=\$HOME/.cursor-profile-${INSTANCE_NAME}/extensions'" >> "${SHELL_CONFIG}"
else
echo "${ALIAS_LINE}" >> "${SHELL_CONFIG}"
fi
echo -e "${GREEN}✓${NC} Alias added to ${SHELL_CONFIG}"
fi
# Step 7: Reload instructions
echo -e "${YELLOW}[7/7]${NC} Reloading shell configuration..."
if [ "$SHELL_NAME" = "fish" ]; then
echo -e "${GREEN}✓${NC} Complete! Run 'source ~/.config/fish/config.fish' or restart your terminal"
elif [ "$SHELL_NAME" = "bash" ]; then
echo -e "${GREEN}✓${NC} Complete! Run 'source ${SHELL_CONFIG}' or restart your terminal"
else
echo -e "${GREEN}✓${NC} Complete! Run 'source ${SHELL_CONFIG}' or restart your terminal"
fi
# Print summary
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}Setup Complete!${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "${GREEN}✓${NC} Application: /Applications/${APP_NAME}"
echo -e "${GREEN}✓${NC} Profile: ${PROFILE_DIR}"
echo -e "${GREEN}✓${NC} Launch script: ${LAUNCH_SCRIPT}"
echo -e "${GREEN}✓${NC} Terminal alias: ${ALIAS_NAME}"
echo ""
echo -e "${YELLOW}How to use:${NC}"
echo -e " • Terminal: ${GREEN}${ALIAS_NAME}${NC}"
echo -e " • Script: ${GREEN}${LAUNCH_SCRIPT}${NC}"
echo ""
echo -e "${YELLOW}Next steps (Optional - Create Automator App):${NC}"
echo -e " 1. Open ${GREEN}Automator${NC}"
echo -e " 2. Click ${GREEN}New Document${NC} → Select ${GREEN}Application${NC}"
echo -e " 3. Search for ${GREEN}'Run Shell Script'${NC} in the actions library"
echo -e " 4. Drag ${GREEN}'Run Shell Script'${NC} to the workflow area"
echo -e " 5. Paste this command:"
echo -e " ${BLUE}${LAUNCH_SCRIPT}${NC}"
echo -e " 6. Save as ${GREEN}Cursor ${INSTANCE_NAME}.app${NC} in /Applications or ~/Applications"
echo -e " 7. Optional: Change the icon"
echo -e " • Right-click the app → ${GREEN}Get Info${NC}"
echo -e " • Find a .icns file or copy icon from original Cursor.app"
echo -e " • Drag the icon to the small icon in the Get Info window"
echo -e " 8. Add to Dock by dragging the app"
echo ""
echo -e "${BLUE}========================================${NC}"
echo -e "Each instance has separate licenses, settings, and extensions!"
echo -e "${BLUE}========================================${NC}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment