# FHS: una introduzione

Il `Filesystem Hierarchy Standard` (`FHS`) definisce un layout standardizzato per la struttura del filesystem nei sistemi operativi Unix-Like. Si tratta di una raccomandazione volta a uniformare la struttura delle directory e il loro contenuto. Sebbene non sia obbligatorio, il FHS viene adottato dalla maggior parte delle distribuzioni Linux.

## Struttura delle directory

Di seguito sono elencate le principali directory definite dallo standard, con una breve descrizione del loro scopo e contenuto:

- `/`: rappresenta la directory principale, situata al vertice della gerarchia. Tutte le altre directory sono contenute al suo interno
- `/bin`: contiene i binari essenziali necessari per il funzionamento del sistema
- `/boot`: include i file necessari al processo di avvio, come l'immagine del `kernel Linux` e il file `initrd`
- `/dev`: ospita i file di dispositivo, che rappresentano le periferiche hardware del sistema
- `/etc`: contiene i file di configurazione del sistema, generalmente in formato testo
- `/home`: ogni utente dispone di una propria home directory, in cui possono essere archiviati i file personali
- `/lib`: include le librerie condivise necessarie per l'esecuzione dei binari presenti in `/bin` e `/sbin`. Queste librerie sono necessarie per l’avvio del sistema e per il funzionamento dei comandi di base
- `/media`: funge da punto di mount per i supporti rimovibili, come chiavette USB e dischi esterni, montati dall'utente
- `/mnt`: directory utilizzata come punto di mount temporaneo per filesystem aggiuntivi
- `/opt`: destinato all'installazione di pacchetti software applicativi di terze parti
- `/root`: rappresenta la directory home del superutente
- `/sbin`: contiene i binari di sistema, ovvero i comandi per la gestione e la manutenzione del sistema operativo. Sono accessibili di norma solo agli utenti con privilegi elevati
- `/tmp`: directory per i file temporanei, che possono essere creati e utilizzati da vari processi
- `/usr`: destinata ai dati utente di sola lettura
- `/proc`: un filesystem virtuale che contiene dati relativi ai processi in esecuzione
- `/var`: directory per i dati variabili, che vengono scritti durante il funzionamento del sistema, come log
- `/var/tmp`: un'altra posizione per i file temporanei. A differenza di `/tmp`, i file qui archiviati persistono generalmente anche dopo il riavvio del sistema
- `/run`: contiene i dati delle variabili di runtime utilizzati dai processi in esecuzione, come i file di identificazione di processo (file con estensione `.pid`). Questa directory deve essere ripulita durante l'avvio del sistema
