Mentre entrambi sono progettati per contenere file non appartenenti al sistema operativo /opte /usr/localnon sono destinati a contenere lo stesso set di file.
/usr/localè un luogo in cui installare i file creati dall'amministratore, in genere utilizzando il makecomando (ad esempio, ./configure; make; make install). L'idea è quella di evitare scontri con i file che fanno parte del sistema operativo, che verrebbero sovrascritti o sovrascriverebbero quelli locali (ad esempio, /usr/bin/foofa parte del sistema operativo mentre /usr/local/bin/fooè un'alternativa locale).
Tutti i file sottostanti /usrsono condivisibili tra istanze del sistema operativo, sebbene ciò avvenga raramente con Linux. Questa è una parte in cui l'FHS è leggermente contraddittorio, poiché /usrè definito di sola lettura, ma /usr/local/bindeve essere letto e scritto per consentire l'installazione locale del software. Lo standard del file system SVR4, che è stata la principale fonte di ispirazione dell'FHS, raccomanda di evitare /usr/locale utilizzare /opt/localinvece per superare questo problema.
/usr/localè un'eredità del BSD originale. A quel tempo, era presente il codice sorgente dei /usr/bincomandi del sistema operativo /usr/src/bine /usr/src/usr.bin, mentre era presente la fonte dei comandi sviluppati localmente /usr/local/srce i relativi file binari /usr/local/bin. Non c'era idea di imballaggi (al di fuori dei tarball).
D'altra parte, /optè una directory per l'installazione di pacchetti disaggregati (ovvero pacchetti che non fanno parte della distribuzione del sistema operativo, ma forniti da una fonte indipendente), ognuno nella propria sottodirectory. Sono già costruiti interi pacchetti forniti da un distributore di software di terze parti indipendente. A differenza delle /usr/localcose, questi pacchetti seguono le convenzioni della directory (o almeno dovrebbero). Ad esempio, someappverrebbe installato in /opt/someapp, con uno dei suoi comandi in essere /opt/someapp/bin/foo, il suo file di configurazione sarebbe in /etc/opt/someapp/foo.conf, e i suoi file di log in /var/opt/someapp/logs/foo.access.
/usr/localtratta di una versione locale del/usrfile system, mentre/optè un segnaposto per cose diverse.