# Filesystem Hierarchy Standard

In informatica il Filesystem Hierarchy Standard (FHS) («Standard di Gerarchia dei Filesystem») è uno standard che definisce le directory principali ed il loro contenuto nel file system dei sistemi operativi Unix-like, tra cui i sistemi Linux.

## Descrizione

Il processo di sviluppo di una gerarchia standard per i file system iniziò nell'agosto 1993 con l'idea di ristrutturare la struttura dei file e delle directory di Linux. L'FSSTND (Filesystem Standard), uno standard di gerarchia dei filesystem, fu messo in funzione il 14 febbraio 1994. Revisioni successive vennero prodotte il 9 ottobre dello stesso anno ed il 28 marzo 1995.
Agli inizi del 1996 fu presa in considerazione l'idea di sviluppare una versione dell'FSSTDN da utilizzare non solo su Linux, ma anche in tutti gli altri sistemi Unix-like con l'aiuto di alcuni membri della comunità di sviluppo BSD. Come risultato di questa collaborazione si misero a fuoco le caratteristiche che accomunavano tutti i sistemi Unix-like. Considerando questa nuova apertura al mondo Unix, il nome dello standard venne cambiato in Filesystem Hierarchy Standard (abbreviato in FHS).
Lo standard FHS viene attualmente mantenuto dall'organizzazione non-profit Free Standards Group che è composta dai maggiori produttori di software ed hardware come Hewlett-Packard, Red Hat, IBM e Dell. Tuttavia la gran parte delle distribuzioni Linux, comprese quelle sviluppate dai membri del Free Standards Group, non seguono completamente questo standard. In particolare, dei percorsi creati specificatamente dai membri dell'FHS, come /srv/, non hanno trovato una grande applicazione. Alcuni sistemi Unix e Linux rompono completamente con l'FHS preferendo un approccio differente; un esempio è GoboLinux. Anche macOS usa nomi leggibili uniti ad un filesystem basato sull'FHS. La versione corrente dello FHS è la 3.0 del 3 giugno 2015.

### Albero e struttura delle directories

Tutti i file e le directories sono disposti sotto la directory root "/", anche se sono fisicamente salvati in periferiche differenti. Alcune di queste directories possono non essere presenti: ad esempio quelle riguardanti il sottosistema grafico X Window System possono mancare se questo non è installato. La maggior parte di queste directories sono presenti su tutti i sistemi Unix-like e usate in modo simile: qui, però, sono presentate le descrizioni relative alla specifica FHS.
| Directory | Descrizione |
| / | Cartella radice del filesystem |
| /bin/ | Comandi essenziali: file binari per tutti gli utenti (es., cat, ls, cp) |
| /boot/ | File statici del Boot loader (es., kernel, initrd) |
| /dev/ | File di periferica (devices) (es., /dev/null) |
| /etc/ | File di configurazione del sistema (da et cetera). |
| /etc/opt/ | File di configurazione di /opt/ |
| /etc/X11/ (opzionale) | File di configurazione dell'X Window System, versione 11 |
| /etc/sgml/ (opzionale) | File di configurazione per SGML. |
| /etc/xml/ (opzionale) | File di configurazione per XML. |
| /home/ (opzionale) | Directory home degli utenti. |
| /lib/ | Librerie essenziali per i binari in /bin/ e /sbin/ |
| /lib<qual>/ (opzionale) | Formati alternativi per le librerie essenziali per i binari in /bin/ e /sbin/. Ad esempio: /lib32/ per librerie a 32 bit e /lib64/ per librerie a 64 bit. |
| /media/ | Punti di montaggio dei media rimovibili come CD-ROM (apparso in FHS-2.3) |
| /mnt/ | Punti di montaggio per filesystem montati (mounted) temporaneamente. |
| /opt/ | Pacchetti software aggiuntivi, componenti statiche. Ad esempio: /opt/<package>/ o di fornitori terzi in: /opt/<provider>/<package>/. Pacchetti non statici vanno invece installati in /var/opt/ |
| /proc/ | File system virtuale che mostra informazioni sullo stato del kernel e dei processi attivi; sono presenti soprattutto file di testo (es, uptime, network) |
| /root/ (opzionale) | Directory home per l'utente root. |
| /run/ | Directory con dati volatili di run-time |
| /sbin/ | Eseguibili per l'amministrazione del sistema (es., init, route, ifup) (system binaries) |
| /srv/ | Dati per i servizi forniti dal sistema. Ad esempio /srv/www/ può ospitare le pagine di un server web. /srv/ftp/ può essere la radice delle cartelle del servizio ftp. /srv/svn/ può ospitare i dati i file versionati in un sistema con svn. |
| /tmp/ | File temporanei: il contenuto non è necessariamente preservato al reboot del sistema. |
| /usr/ | Gerarchia secondaria per applicativi e dati condivisibili ad uso degli utenti (non di sistema), ed in sola lettura (unix system resources). Questa directory è nata per essere condivisa tra gli host e non deve contenere dati specifici per "questo" host. |
| /usr/bin/ | Come la directory /bin/. |
| /usr/include/ | File Header (da includere). |
| /usr/lib/ | Come la directory /lib/. |
| /usr/libexec/ (opzionale) | Librerie ad uso interno non usate direttamente dagli utenti o da script. |
| /usr/lib<qual>/ | Come la directory /lib<qual>/. |
| /usr/sbin/ | Come la directory /sbin/. |
| /usr/share/ | Dati condivisi (shared) indipendenti dall'architettura. |
| /usr/src/ (opzionale) | Codice sorgente (Source code). |
| /usr/X11R6/ (opzionale) | X Window System, Versione 11 Release 6. |
| /usr/local/ | Terza gerarchia per i dati locali, specifici per “questo” host. Inoltre /usr/local/ è la posizione per i pacchetti che non fanno parte della distribuzione, come i pacchetti che vengono compilati ed installati a partire dai sorgenti. |
| /var/ | File con dati variabili |
| /var/account/ (opzionale) | Dati di accounting dei processi attualmente attivi. |
| /var/cache/ (opzionale) | Dati di cache dei processi attualmente attivi. |
| /var/crash/ (opzionale) | Può ospitare eventuali dump di sistema in caso di crash applicativo. |
| /var/games/ (opzionale) | Dati variabili associati o usati da giochi installati in /usr/. |
| /var/lib/ | Contiene i dati dinamici relativi allo stato degli applicativi in esecuzione sul server. |
| /var/lock/ | Contiene file di lock applicativo ed altre risorse condivise tra processi. |
| /var/log/ | Contiene i file di log dei processi. |
| /var/mail/ (opzionale) | Contiene file temporanei della posta elettronica. |
| /var/opt/ | Contiene file di dati variabili per le applicazioni installate in /opt/. |
| /var/run/ | Contiene file di run-time variabili. Ora si fa riferimento a /run/ e /var/run può essere un link a /run/ o presente per retrocompatiblità. |
| /var/spool/ | Contiene dati in attesa di elaborazione, ad esempio per sistemi che usano code di elaborazione o code di stampa. |
| /var/tmp/ | File temporanei che devono sopravvivere al riavvio del sistema, cosa non garantita in /tmp/. |
| /var/yp/ (opzionale) | Dati variabili per il Network Information Service (NIS), noto in precedenza come Sun Yellow Pages (YP). |