# โก Modular Bashrc Manager
**Un sistema moderno, modulare e velocissimo per organizzare, gestire e scalare la configurazione di Bash su Linux e macOS.**
[](#)
[](README.md)
[](https://www.gnu.org/software/bash/)
[](LICENSE)
[](https://www.kernel.org/)
[](https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager)
[๐ฌ๐ง **English**](README.md) โข [๐ฎ๐น **Italiano**](README.it.md)
---
## ๐ Indice dei Contenuti
- [Panoramica](#-panoramica)
- [Perchรฉ Modular Bashrc Manager?](#-perch%C3%A9-modular-bashrc-manager)
- [Caratteristiche Principali](#-caratteristiche-principali)
- [Architettura e Flusso di Caricamento](#-architettura-e-flusso-di-caricamento)
- [Installazione e Avvio Rapido](#-installazione-e-avvio-rapido)
- [Installazione Automatica](#installazione-automatica)
- [Cosa fa l'Installer](#cosa-fa-linstaller)
- [Guida ai Comandi CLI (`brc-script`)](#-guida-ai-comandi-cli-brc-script)
- [Tabella Rapida dei Comandi](#tabella-rapida-dei-comandi)
- [Esempi di Utilizzo Pratico](#esempi-di-utilizzo-pratico)
- [Moduli Predefiniti Inclusi](#-moduli-predefiniti-inclusi)
- [Creazione di Moduli Personalizzati](#-creazione-di-moduli-personalizzati)
- [Utility Integrate (`ccecho`)](#-utility-integrate-ccecho)
- [Distribuzioni Supportate](#-distribuzioni-supportate)
- [Risoluzione Problemi e FAQ](#-risoluzione-problemi-e-faq)
- [Licenza e Autore](#-licenza-e-autore)
---
## ๐ Panoramica
**Modular Bashrc Manager** sostituisce il tradizionale file unico e disordinato `~/.bashrc` con un'architettura pulita, modulare e disaccoppiata, ispirata al paradigma `available`/`enabled` utilizzato da Debian, Apache e Nginx.
Invece di accumulare centinaia di alias, funzioni, variabili d'ambiente e prompt in un unico file monolitico, la configurazione della shell viene suddivisa in script indipendenti che possono essere abilitati, disabilitati, visualizzati in anteprima, creati o aggiornati in modo sicuro con un solo comando.
```
~/.bashrc โโโถ Loader โโโถ ~/.bashrc.d/scripts-needed/ (Motore e utility di base)
โโโถ ~/.bashrc.d/scripts-enabled/ (Personalizzazioni attive)
```
---
## ๐ก Perchรฉ Modular Bashrc Manager?
| `~/.bashrc` Monolitico Tradizionale | Con Modular Bashrc Manager |
| :--- | :--- |
| โ Centinaia di righe confuse in un solo file | โ
Script modulari, ordinati e dedicati a compiti specifici |
| โ Difficile isolare bug e testare modifiche | โ
Attiva o disattiva i moduli all'istante (`brc-script -e` / `-d`) |
| โ Rischio di rompere l'intera shell per un errore | โ
Attivazione sicura tramite symlink e backup automatici |
| โ Complesso condividere o sincronizzare snippet | โ
File modulari pronti per essere condivisi o versionati |
| โ Necessitร di aprire editor di testo per leggere i file | โ
Anteprima immediata da terminale con numeri di riga (`brc-script -p`) |
---
## โจ Caratteristiche Principali
- ๐ **Installer Intelligente Multi-Distribuzione**
Riconosce automaticamente il gestore di pacchetti del sistema (`apt`, `dnf`, `yum`, `pacman`, `zypper`, `apk`, `brew`) e installa in autonomia le dipendenze necessarie (`jq`, `curl`).
- ๐ **Migrazione Sicura a Rischio Zero**
Crea un backup con data/ora del `~/.bashrc` attuale e trasferisce automaticamente tutte le tue impostazioni pregresse in `00_default.sh`: **non perderai nessuna configurazione**.
- โก **Gestione Massiva Multi-Script**
Abilita, disabilita, visualizza o rimuovi piรน script simultaneamente passando gli ID numerici o i nomi dei file (es. `brc-script -e 1 3 4` oppure `brc-script -d 03_bashboard 04_aliases`).
- ๐๏ธ **Anteprima Rapida del Codice (`cat`)**
Ispeziona il contenuto e la sintassi di uno script direttamente nel terminale con intestazioni colorate e numerazione delle righe senza dover aprire editor esterni (`brc-script -p `).
- ๐ฅ๏ธ **Bashboard di Sistema Intelligente**
Include `03_bashboard.sh`, una dashboard stile MOTD veloce che mostra CPU, RAM, dischi, temperatura, IP locali/pubblici, aggiornamenti di sistema e il **rilevamento dinamico automatico della Web UI di Cockpit**.
- ๐ฟ **Evidenziazione Git nel Prompt della CLI**
Include hook per il prompt dinamico (`01_git-cli-highlitgh.sh` e `02_git-cli-highlitgh-root.sh`) per mostrare branch Git, file indicizzati (`+`), modificati (`M:`), non tracciati (`N:`) e stato di sincronizzazione remota (`โ`/`โ`).
- ๐ **Aggiornamenti Gitea e Upgrade Sicuro**
Verifica la presenza di aggiornamenti sul repository con `brc-script -u` ed effettua l'aggiornamento sicuro del motore con `brc-script --upgrade` senza toccare `00_default.sh` o i tuoi script personali.
- ๐จ **Utility Integrata di Stile `ccecho`**
Libreria leggera per stampare testi colorati e formattati su terminale (grassetto, sottolineato, lampeggiante, colori di testo e sfondo).
---
## ๐๏ธ Architettura e Flusso di Caricamento
All'avvio della shell, `~/.bashrc` esegue un loader leggero che carica i moduli in ordine deterministico:
```text
~/.bashrc.d/
โโโ .version # Hash di commit/versione installata
โโโ .update_cache # Cache per i controlli passivi di update da Gitea
โโโ scripts-needed/ # Script fondamentali del motore (caricati SEMPRE per primi)
โ โโโ brc-script.sh # Logica centrale e funzioni della CLI
โ โโโ ccecho.sh # Libreria di output a colori
โ
โโโ scripts-available/ # Tutti gli script installati (Libreria dei moduli)
โ โโโ 00_default.sh # La tua configurazione migrata (Protetta da modifiche)
โ โโโ 01_git-cli-highlitgh.sh # Prompt Git per utenti standard
โ โโโ 02_git-cli-highlitgh-root.sh # Prompt Git con distinzione cromatica Root/User
โ โโโ 03_bashboard.sh # Dashboard metriche e rilevamento Cockpit
โ โโโ 04_aliases.sh # Alias e scorciatoie di uso comune
โ
โโโ scripts-enabled/ # Symlink agli script attivi in scripts-available/
โ โโโ 00_default.sh -> ../scripts-available/00_default.sh
โ โโโ 03_bashboard.sh -> ../scripts-available/03_bashboard.sh
โ
โโโ scripts-removed/ # Cestino con backup marcati con timestamp degli script eliminati
```
### Ordine di Esecuzione:
1. Vengono caricati sequenzialmente tutti i file presenti in `scripts-needed/*.sh`.
2. Vengono caricati in ordine alfabetico tutti i symlink attivi in `scripts-enabled/*.sh`.
---
## ๐ฅ Installazione e Avvio Rapido
### Installazione Automatica
1. **Clona il repository ufficiale:**
```bash
git clone https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager.git
cd Modular-Bashrc-Manager/installer
```
2. **Avvia lo script di installazione:**
```bash
chmod +x brc-script-install.sh
./brc-script-install.sh
```
3. **Ricarica la sessione della shell:**
```bash
refresh-brc
# oppure: source ~/.bashrc
```
> [!TIP]
> Puoi eseguire l'installer sia come utente normale che come `root` per configurare qualsiasi utente presente sul sistema.
### Cosa fa l'Installer:
- ๐ Rileva la distribuzione Linux/macOS e installa `jq` e `curl` se mancanti.
- ๐พ Crea un backup con data e ora del tuo `~/.bashrc` originale (es. `~/bashrc-backup-2026-08-26_16-00-00`).
- ๐ Migra il contenuto del vecchio `.bashrc` in `~/.bashrc.d/scripts-available/00_default.sh` e lo abilita immediatamente.
- ๐งน Sostituisce `~/.bashrc` con il blocco loader minimale e pulito.
- ๐ฆ Copia i file essenziali in `scripts-needed/` e i moduli standard in `scripts-available/`.
- ๐ท๏ธ Crea il file `.version` con il commit hash di riferimento.
---
## ๐ป Guida ai Comandi CLI (`brc-script`)
Il comando principale per gestire l'intero ambiente รจ `brc-script`.
### Tabella Rapida dei Comandi
| Azione | Flag / Alias | Argomenti | Descrizione |
| :--- | :--- | :--- | :--- |
| **Elenco Script** | `-l`, `--list`, `list` | *nessuno* | Mostra tutti gli script, l'ID numerico e lo stato di attivazione (`-` blu) |
| **Anteprima / Cat** | `-p`, `-v`, `--cat`, `--show`, `cat` | `` | Stampa a terminale il codice con numeri di riga senza aprire editor |
| **Abilita** | `-e`, `--enable`, `enable` | `` | Attiva uno o piรน script creando il symlink in `scripts-enabled/` |
| **Disabilita** | `-d`, `--disable`, `disable` | `` | Disattiva uno o piรน script rimuovendo il symlink |
| **Abilita Tutti** | `-ea`, `--enable-all`, `enable-all` | *nessuno* | Attiva contemporaneamente tutti gli script disponibili |
| **Disabilita Tutti**| `-da`, `--disable-all`, `disable-all` | *nessuno* | Disattiva contemporaneamente tutti gli script abilitati |
| **Crea Script** | `-c`, `--create`, `create` | *nessuno* | Procedura guidata per creare un nuovo script da template e aprirlo nell'editor |
| **Modifica Script** | `-m`, `--modify`, `modify` | `` | Apre lo script nell'editor (`$EDITOR` o `vim`) con possibilitร di rinominarlo |
| **Rimuovi Script** | `-r`, `--remove`, `remove` | `` | Sposta in modo sicuro lo script nel cestino `scripts-removed/` con timestamp |
| **Verifica Update** | `-u`, `--update`, `update` | *nessuno* | Interroga il repository Gitea per rilevare nuovi commit e versioni |
| **Aggiorna Sistema**| `--upgrade`, `upgrade` | *nessuno* | Aggiorna il motore e i moduli predefiniti senza toccare il tuo codice personale |
| **Ricarica Shell** | `refresh-brc` | *nessuno* | Ricarica istantaneamente la configurazione `.bashrc` nella sessione corrente |
---
### Esempi di Utilizzo Pratico
#### 1. Elencare i Moduli Disponibili
```bash
brc-script -l
```
*Esempio di output:*
```text
------------------------------------
Scripts List
------------------------------------
1) 00_default.sh -
2) 01_git-cli-highlitgh.sh
3) 02_git-cli-highlitgh-root.sh
4) 03_bashboard.sh -
5) 04_aliases.sh
------------------------------------
'-' (blue) = Active / Enabled
------------------------------------
```
#### 2. Abilitare Piรน Script in un Solo Comando
Puoi specificare gli ID numerici o i nomi (con o senza estensione `.sh`):
```bash
# Abilita tramite ID numerici
brc-script -e 2 5
# Abilita tramite nomi degli script
brc-script -e 01_git-cli-highlitgh 04_aliases
```
#### 3. Disabilitare Piรน Script Contemporaneamente
```bash
# Disabilita per ID
brc-script -d 2 4 5
# Disabilita per nome
brc-script -d 03_bashboard 04_aliases
```
#### 4. Visualizzare l'Anteprima del Codice Direttamente nel Terminale
Esamina cosa fa uno script prima di attivarlo:
```bash
# Anteprima tramite ID numerico
brc-script -p 4
# Anteprima tramite nome script
brc-script --cat 03_bashboard
```
#### 5. Creare un Nuovo Script Personalizzato
```bash
brc-script -c
```
Verrร richiesto il nome del file (es. `scorciatoie-docker`), verrร generato un template pronto e aperto direttamente nel tuo `$EDITOR` (o `vim`).
#### 6. Verificare e Applicare gli Aggiornamenti
```bash
# Controlla la presenza di novitร su Gitea
brc-script -u
# Effettua l'aggiornamento sicuro del motore
brc-script --upgrade
```
> [!NOTE]
> `brc-script --upgrade` non sovrascrive **mai** il tuo file `00_default.sh` o i tuoi moduli creati manualmente. Vengono aggiornati solo i moduli ufficiali e i componenti di sistema in `scripts-needed/`.
---
## ๐ฆ Moduli Predefiniti Inclusi
### `00_default.sh` โ Configurazione Personale Migrata
- **Scopo:** Contiene tutti i tuoi alias, funzioni pregresse, variabili d'ambiente ed esportazioni `PATH` migrate durante l'installazione.
- **Sicurezza:** **Strettamente protetto**. Gli aggiornamenti non modificheranno o sovrascriveranno mai questo file.
### `01_git-cli-highlitgh.sh` โ Prompt Git Interattivo (Utente)
- **Scopo:** Mostra nel prompt del terminale lo stato del repository Git corrente:
- Nome del branch in **Verde** (clean) o **Viola** (file modificati).
- `+N`: Numero di file in stage (Verde).
- `M:N`: Numero di file modificati (Giallo).
- `N:N`: Numero di file non tracciati (Rosso).
- `โN` / `โN`: Commit in anticipo o ritardo rispetto al remote (Ciano).
### `02_git-cli-highlitgh-root.sh` โ Prompt Git con Evidenziazione Root
- **Scopo:** Versione del prompt Git avanzata con colorazione ad alta visibilitร (rosso acceso `#` per l'utente `root`, verde/blu `>` per gli utenti normali).
### `03_bashboard.sh` โ Bashboard di Sistema & Rilevamento Cockpit
- **Scopo:** Mostra un riepilogo grafico all'apertura del terminale:
- Dati della distribuzione e Hostname
- Indirizzi IP locali e IP pubblico (con sistema di caching per non rallentare l'avvio)
- Uptime di sistema e Carico
- Utilizzo di RAM e Disco con soglie di allarme colorate
- Temperatura CPU (con riconoscimento automatico delle macchine virtuali)
- Pacchetti di aggiornamento disponibili (`apt`, `dnf`, `yum`, `pacman`, `zypper`, `apk`)
- **Rilevamento Dinamico di Cockpit:** Riconosce se Cockpit Web UI รจ attivo sul sistema, ne individua la porta d'ascolto e stampa l'URL diretto di accesso.
### `04_aliases.sh` โ Alias Comuni
- **Scopo:** Raccolta di alias pratici (ad esempio `ls --color`).
---
## ๐ ๏ธ Creazione di Moduli Personalizzati
Aggiungere un nuovo modulo personalizzato รจ estremamente semplice:
1. Avvia la procedura guidata:
```bash
brc-script -c
```
2. Inserisci il nome desiderato (es. `mie-funzioni-docker`).
3. Scrivi i tuoi alias, funzioni o variabili:
```bash
#!/bin/bash
# ============================================================
# Modular Bashrc - mie-funzioni-docker.sh
# ============================================================
# Alias personalizzati
alias dps="docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
alias dlogs="docker logs -f --tail=100"
# Funzione personalizzata con feedback a colori
dclean() {
ccecho -t byellow "Pulizia dei container e immagini inutilizzate..."
docker system prune -af --volumes
ccecho -t bgreen "Docker pulito con successo!"
}
```
4. Salva ed esci dall'editor.
5. Abilita il nuovo modulo e ricarica:
```bash
brc-script -e mie-funzioni-docker
refresh-brc
```
---
## ๐จ Utility Integrate (`ccecho`)
Modular Bashrc Manager include l'utility `ccecho` in `scripts-needed/ccecho.sh`, utilizzabile in qualsiasi script per formattare testo e colori ANSI nel terminale:
```bash
ccecho -t green -s bold "Operazione completata con successo!"
ccecho -t red -b black -s underline "Errore Fatale: Connessione rifiutata"
```
### Parametri Supportati:
- **Colori Testo (`-t` / `--text`):**
`black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`
*Varianti brillanti:* `bblack`, `bred`, `bgreen`, `byellow`, `bblue`, `bmagenta`, `bcyan`, `bwhite`
- **Colori Sfondo (`-b` / `--bg`):**
`black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`
*Varianti brillanti:* `bblack`, `bred`, `bgreen`, `byellow`, `bblue`, `bmagenta`, `bcyan`, `bwhite`
- **Stili del Testo (`-s` / `--style`):**
`bold`, `dim`, `italic`, `underline`, `blink`, `reverse`, `hidden`, `strike`
---
## ๐ง Distribuzioni Supportate
Modular Bashrc Manager รจ compatibile e testato con:
| Famiglia | Distribuzioni / Sistemi Operativi | Gestore Pacchetti |
| :--- | :--- | :--- |
| **Debian** | Debian, Ubuntu, Linux Mint, Pop!_OS, Raspberry Pi OS | `apt` / `apt-get` |
| **Red Hat** | Fedora, RHEL, CentOS, Rocky Linux, AlmaLinux | `dnf` / `yum` |
| **Arch** | Arch Linux, Manjaro, EndeavourOS | `pacman` |
| **SUSE** | openSUSE Leap, openSUSE Tumbleweed | `zypper` |
| **Alpine** | Alpine Linux (server e container) | `apk` |
| **macOS** | Apple macOS (Intel e Apple Silicon) | `brew` (Homebrew) |
---
## โ Risoluzione Problemi e FAQ
### 1. Ho abilitato uno script ma i nuovi comandi non funzionano ancora!
Esegui il comando di ricarica rapida nel terminale:
```bash
refresh-brc
```
*(Oppure riapri una nuova scheda del terminale).*
### 2. Come ripristino il mio vecchio `.bashrc` originale?
L'installer crea automaticamente una copia di backup prima di qualsiasi modifica. Per ripristinarlo:
```bash
cp ~/bashrc-backup-* ~/.bashrc
```
### 3. Dove finiscono gli script che elimino?
Quando elimini uno script con `brc-script -r `, il file non viene perso in modo irreversibile, ma viene archiviato con marcatura oraria nella cartella:
```text
~/.bashrc.d/scripts-removed/
```
### 4. Come posso cambiare l'editor predefinito di `brc-script`?
Imposta la variabile d'ambiente `EDITOR` all'interno di `00_default.sh`:
```bash
export EDITOR="nano" # oppure "code", "vim", "nvim", "micro"
```
---
## ๐ Licenza e Autore
- **Autore:** Simone Cusano ([sld-server.org](https://sld-server.org))
- **Repository Ufficiale:** [https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager](https://gitea.sld-server.org/sld-admin/Modular-Bashrc-Manager)
- **Licenza:** GNU General Public License v3.0 ([GPL-3.0](LICENSE))
---
Sviluppato con โค๏ธ da Simone Cusano. Se trovi utile questo progetto, lascia una stella sul repository!