Il modo più semplice per gestire i dotfiles con GNU Stow
Su Linux, molti file di configurazione iniziano con un punto (.) e per questo sono nascosti. Questi “dotfiles” sono il cuore di come appare e si comporta il tuo ambiente: dal terminale, all’editor di testo, fino a Git. Gestirli a mano, però, diventa presto complicato e disordinato. Qui entra in gioco GNU Stow: uno strumento leggero che ti permette di tenere tutto in ordine in un’unica posizione, senza stravolgere il funzionamento del sistema.
Cosa sono i dotfiles e perché sono importanti
I dotfiles sono file di configurazione nascosti, tipicamente con nomi come .bashrc o .gitconfig. Il sistema li occulta per mantenere pulita la home. Regolano l’aspetto del terminale, le scorciatoie, i temi, le impostazioni dell’editor, il formato dei commit e tanto altro.
Ogni personalizzazione che imposti finisce qui dentro. Se reinstalli senza salvarli, perdi tutto e devi ricostruire a memoria. La buona notizia è che sono file di testo: puoi salvarli, versionarli e ripristinarli quando vuoi.
Perché il metodo “classico” non funziona bene
- Non esiste una struttura chiara: i file di configurazione sono sparsi nella home, in mezzo a file normali, e diventa difficile capire cosa fa parte del setup e cosa no.
- Usare Git direttamente nella home è scomodo: ti ritrovi a tracciare centinaia di file irrilevanti per monitorarne pochi davvero importanti.
- Su più macchine diventa un incubo: copiare a mano è lento e rischioso, finisci spesso con versioni diverse dello stesso file e senza sapere quale sia quella “giusta”.
Serve uno strumento pensato apposta: che mantenga i file in un’unica cartella ordinata e li colleghi nei percorsi dove le applicazioni se li aspettano, senza copie manuali.
Cos’è GNU Stow e come funziona
GNU Stow è un gestore di symlink. Prende i file da una directory organizzata (gestita da te) e crea collegamenti simbolici nei percorsi in cui il sistema si aspetta quei file. Per le applicazioni non cambia nulla: leggono i file nelle posizioni abituali. La differenza è che i “veri” file vivono nella tua cartella dei dotfiles, dove puoi tenerli in ordine e sotto controllo versione.
Il flusso è semplice:
– Dentro una directory principale (ad esempio ~/dotfiles), crei delle sottocartelle, una per ciascuna applicazione: ogni sottocartella è un “pacchetto”.
– Quando esegui stow zsh da ~/dotfiles, Stow replica la struttura della cartella zsh nella tua home usando symlink.
– Il tuo .zshrc continua a essere “letto” dal solito posto, ma il file reale si trova dentro ~/dotfiles/zsh.
Nessuna copia, niente sincronizzazioni a mano: modifichi i file nella cartella dei dotfiles e le modifiche sono subito attive.
Installare GNU Stow
Stow è disponibile sulle principali distribuzioni Linux e su macOS.
- Debian/Ubuntu:
sudo apt install stow - Arch:
sudo pacman -S stow - Fedora:
sudo dnf install stow
Verifica l’installazione:
stow --version
Organizzare la cartella dei dotfiles
Per iniziare, crea la directory principale e spostati al suo interno:
mkdir -p ~/dotfiles
cd ~/dotfiles
Crea una sottocartella per ogni applicazione che vuoi gestire (di solito con il nome dell’app: bash, git, zsh, nvim, ecc.). All’interno, rispecchia esattamente il percorso in cui i file vivono normalmente nella tua home.
Esempi:
mkdir -p bash
mkdir -p zsh
mkdir -p git
mkdir -p nvim/.config/nvim
L’idea chiave: la struttura interna del pacchetto deve replicare i percorsi reali partendo dalla tua home. Se un’app usa ~/.config/app, allora dentro il pacchetto creerai .config/app e ci metterai i relativi file.
Suggerimento: inizializza subito un repository Git in ~/dotfiles per tracciare ogni modifica fin dall’inizio.
Migrare i dotfiles esistenti in Stow
Se hai già dei file nella home, puoi importarli facilmente, con un’attenzione: Stow non crea symlink se nel percorso esiste già un file reale. Quindi sposta prima il file nella struttura corretta dentro ~/dotfiles, poi esegui Stow.
Esempio con .gitconfig:
mkdir -p ~/dotfiles/git
mv ~/.gitconfig ~/dotfiles/git/.gitconfig
cd ~/dotfiles
stow git
Procedi un’app alla volta: migrare tutto in blocco aumenta il rischio di errori.
Nota: puoi fare una prova a secco per vedere cosa succederebbe senza toccare nulla:
stow -n <pacchetto>
Aggiungi altre opzioni a -n per simulare anche conflitti o percorsi specifici.
Gestire più applicazioni con Stow
La forza di Stow è che scala benissimo: che tu abbia un solo pacchetto o venti, il metodo non cambia. Ogni app resta isolata nella propria cartella.
- Crea il pacchetto, inserisci i file con la struttura corretta, poi:
stow <pacchetto> - Puoi installare più pacchetti in un colpo:
stow bash zsh vim git
Se lavori su più macchine con differenze minori, puoi mantenere pacchetti “comuni” e pacchetti specifici per macchina, stowando solo ciò che serve su ciascun sistema.
Aggiornare e rimuovere i dotfiles in sicurezza
Ricorda: i file “veri” sono in ~/dotfiles; nella home ci sono solo symlink. Le modifiche sono immediate, non devi copiare nulla.
- Per rimuovere i link di un pacchetto (senza toccare i file originali nel repo dei dotfiles):
stow -D <pacchetto> - Per ricreare i symlink da zero in modo pulito:
stow -R <pacchetto>
Questo approccio rende il sistema prevedibile: niente file sovrascritti per errore, niente residui difficili da ripulire.
Versionare i dotfiles con Git
Una volta organizzati i dotfiles e impostato Stow, il passo successivo è metterli sotto controllo versione. Inizializza Git nella cartella principale, aggiungi tutto e fai push verso un remoto (GitHub, GitLab, ecc.).
cd ~/dotfiles
git init
git add .
git commit -m "Setup iniziale dei dotfiles"
git remote add origin git@github.com:tuoutente/dotfiles.git
git push -u origin main
Quando cambi qualcosa e rompi il setup, puoi tornare a una versione funzionante. E quando passi a una nuova macchina o fai una reinstallazione, non ricominci da capo: cloni il repo, esegui Stow sui pacchetti necessari e in pochi minuti hai di nuovo il tuo ambiente.
Ripristino tipico:
git clone https://github.com/tuoutente/dotfiles.git ~/dotfiles
cd ~/dotfiles
stow zsh git nvim tmux
Consigli extra:
– Aggiungi un README con l’elenco dei pacchetti e le dipendenze necessarie per ognuno (utile sui setup puliti).
– Crea uno script install.sh che stowi automaticamente tutti i pacchetti, così il ripristino diventa un singolo comando.
Esempio minimale:
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
stow bash zsh git nvim tmux
Rendi lo script eseguibile:
chmod +x install.sh
Considerazioni finali
Insieme, GNU Stow e Git risolvono definitivamente la gestione dei dotfiles: i tuoi file di configurazione vivono in un unico posto, sono sempre al sicuro e versionati, e puoi ricreare l’intero ambiente su qualsiasi macchina in pochi minuti, senza stress e senza caos.

