Gestire i dotfiles con GNU Stow in modo semplice e ordinato

4 aprile 2026
6 min lettura
41 visualizzazioni
Guybrush Threepwood

Gestire i dotfiles con GNU Stow in modo semplice e ordinato

L’articolo illustra come usare GNU Stow per centralizzare i dotfiles in una directory (es. ~/dotfiles) e creare symlink verso le posizioni attese dalle applicazioni. Descrive perché la gestione manuale o con Git nella home è problematica, come organizzare pacchetti per app, migrare file esistenti, installare e rimuovere symlink in sicurezza (stow, -D, -R), e come versionare tutto con Git per un ripristino rapido su nuove macchine. Include comandi di installazione, suggerimenti per pacchetti comuni/specifici e uno script install.sh di automazione.


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.

Tags:

#git

#dotfiles

#gnu stow

Articolo scritto da Guybrush Threepwood

Guybrush Threepwood, nato nei primi anni ’80, è un autore specializzato in tecnologia, informatica e cultura digitale. Cresciuto in un’epoca di grandi trasformazioni tecnologiche, ha sviluppato fin da bambino una forte passione per i computer e il mondo dei videogiochi, muovendo i primi passi su macchine iconiche come il Commodore Amiga 500, tra floppy disk, linguaggi BASIC e interminabili pomeriggi passati a esplorare mondi virtuali. Grande appassionato di fantascienza, è da sempre affascinato dall’universo di Star Wars, che ha contribuito a plasmare la sua immaginazione e il suo interesse per le tecnologie futuristiche. Parallelamente, ha coltivato un amore per le avventure grafiche classiche, in particolare la saga di Monkey Island, da cui trae ispirazione anche il suo pseudonimo. Nel tempo libero continua a coltivare le sue passioni: retrogaming, fantascienza, smanettamento con nuovi dispositivi e software, e la riscoperta delle tecnologie che hanno segnato la sua infanzia. Per lui, la tecnologia non è solo lavoro, ma un linguaggio attraverso cui raccontare il presente e immaginare il futuro.

Domande Frequenti