#!/bin/bash export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # ==DIS/AUTOEXEC== # === rpi_seal_installer.sh === # Самораспаковывающийся установщик для rpi_seal # Устанавливает в выбранный каталог (по умолчанию: ~/rpi_seal) и создаёт alias # set -e # 🔧 Запрос пользовательского каталога read -rp "📁 Введите путь установки [по умолчанию: $HOME/rpi_seal]: " input_dir INSTALL_DIR="${input_dir:-$HOME/rpi_seal}" ARCHIVE_START_LINE=$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0") TARGET_ALIAS="bash $INSTALL_DIR/qq.sh" ALIAS_LINE="alias rpi_seal=\"$TARGET_ALIAS\"" echo "[*] Установка rpi_seal в: $INSTALL_DIR" # 📦 Проверка, установлен ли уже if [[ -d "$INSTALL_DIR" ]]; then echo "⚠️ Каталог уже существует: $INSTALL_DIR" read -rp "🔁 Перезаписать? [y/N] " confirm if [[ ! "$confirm" =~ ^[Yy]$ ]]; then echo "❎ Отменено пользователем." exit 1 fi rm -rf "$INSTALL_DIR" fi # 📂 Распаковка архива mkdir -p "$INSTALL_DIR" tail -n +$ARCHIVE_START_LINE "$0" | tar -xz -C "$INSTALL_DIR" chmod +x "$INSTALL_DIR"/*.sh # 🐚 Определение оболочки и alias-файла case "$SHELL" in */zsh) ALIAS_FILE="$HOME/.zshrc" SHELL_TYPE="zsh" ;; */bash) if grep -qF ".bash_aliases" "$HOME/.bashrc"; then ALIAS_FILE="$HOME/.bash_aliases" else ALIAS_FILE="$HOME/.bashrc" fi SHELL_TYPE="bash" ;; *) echo "⚠️ Неизвестная оболочка: $SHELL" ALIAS_FILE="" SHELL_TYPE="unknown" ;; esac echo "[*] Обнаружена оболочка: $SHELL_TYPE" [[ -n "$ALIAS_FILE" ]] && echo "[*] Alias будет добавлен в: $ALIAS_FILE" # 💡 Функция добавления/обновления alias add_or_replace_alias() { local alias_file="$1" [[ -z "$alias_file" ]] && return # ⏎ Убедимся, что файл заканчивается переводом строки if [[ -s "$alias_file" && $(tail -c1 "$alias_file") != "" ]]; then echo "" >> "$alias_file" fi # 🔍 Поиск существующего alias local existing_line existing_line=$(grep -E "^alias rpi_seal=" "$alias_file" 2>/dev/null || true) if [[ -n "$existing_line" ]]; then # 🧼 Очистка кавычек вокруг значения alias local current_value current_value=$(echo "$existing_line" | sed -E 's/^alias rpi_seal="(.*)"$/\1/') # 🔄 Сравнение текущего значения с требуемым if [[ "$current_value" == "$TARGET_ALIAS" ]]; then echo "✅ Alias уже настроен правильно: rpi_seal → $TARGET_ALIAS" return else echo "⚠️ Существующий alias отличается:" echo " Найдено: $current_value" echo " Требуется: $TARGET_ALIAS" read -rp "🔁 Перезаписать alias? [Y/n/другое_имя]: " choice case "$choice" in [Yy]*|"") sed -i '/^alias rpi_seal=/d' "$alias_file" echo "$ALIAS_LINE" >> "$alias_file" echo "✅ Alias rpi_seal обновлён." ;; [Nn]*) echo "⏭️ Alias не был изменён." ;; *) echo "➕ Добавление alias с именем '$choice'" echo "alias $choice=\"$TARGET_ALIAS\"" >> "$alias_file" echo "✅ Alias $choice добавлен." ;; esac fi else # ➕ Новый alias echo "$ALIAS_LINE" >> "$alias_file" echo "✅ Alias rpi_seal добавлен в $alias_file" fi } add_or_replace_alias "$ALIAS_FILE" echo "✅ Установка завершена. Используй команду: rpi_seal" [[ "$SHELL_TYPE" == "zsh" ]] && echo "🔄 Чтобы alias заработал: source ~/.zshrc или перезапусти терминал" [[ "$SHELL_TYPE" == "bash" ]] && echo "🔄 Чтобы alias заработал: source ~/.bashrc или перезапусти терминал" exit 0 __ARCHIVE_BELOW__