#!/bin/bash # # Purpose : Install Claude Code using the official native installer set -euo pipefail # Check if Claude Code is already installed if command -v claude &>/dev/null; then echo "Claude Code is already installed: $(claude --version)" else echo "Installing Claude Code..." curl -fsSL https://claude.ai/install.sh | bash fi # The native installer places the binary in ~/.local/bin LINE='export PATH="$HOME/.local/bin:$PATH"' if grep -qF "$LINE" ~/.bashrc; then echo "~/.local/bin already on PATH in .bashrc" else echo "$LINE" >> ~/.bashrc echo "~/.local/bin added to PATH in .bashrc" fi # Desktop notifications via notify-send (libnotify) SETTINGS_FILE="$HOME/.claude/settings.json" if [ -f "$SETTINGS_FILE" ]; then echo "Claude Code settings already exist at $SETTINGS_FILE" else echo "Writing Claude Code settings to $SETTINGS_FILE..." mkdir -p "$(dirname "$SETTINGS_FILE")" cat > "$SETTINGS_FILE" <<'EOF' { "hooks": { "Notification": [ { "matcher": "", "hooks": [ { "type": "command", "command": "notify-send 'Claude Code' 'Needs your input'" } ] } ], "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "notify-send 'Claude Code' 'Task completed'" } ] } ] } } EOF fi echo "Done. Run 'claude' to log in and get started."