Bien que les deux sont conçus pour contenir des fichiers ne faisant pas partie du système d'exploitation, /optet /usr/localne sont pas destinés à contenir le même ensemble de fichiers.
/usr/localest un emplacement pour installer les fichiers créés par l'administrateur, généralement à l'aide de la makecommande (par exemple, ./configure; make; make install). L'idée est d'éviter les conflits avec des fichiers faisant partie du système d'exploitation, qui pourraient être écrasés ou écrasés par des fichiers locaux sinon (par exemple, /usr/bin/foofait partie du système d'exploitation tout en /usr/local/bin/fooconstituant une alternative locale).
Tous les fichiers sous /usrpeuvent être partagés entre les instances de système d'exploitation, bien que cela soit rarement fait avec Linux. Ceci est une partie où la FHS est légèrement contradictoire, comme /usrdéfini en lecture seule, mais /usr/local/bindoit être en lecture-écriture pour que l'installation locale du logiciel réussisse. Le standard de système de fichiers SVR4, qui était la principale source d’inspiration de FHS, recommande d’éviter /usr/localet d’utiliser /opt/localplutôt pour surmonter ce problème.
/usr/localest un héritage de la BSD d'origine. À ce moment-là, le code source des /usr/bincommandes du système d' exploitation se trouvait dans /usr/src/binet /usr/src/usr.bin, tandis que la source des commandes développées localement se trouvait dans /usr/local/srcet leurs fichiers binaires dans /usr/local/bin. Il n'y avait aucune notion d'emballage (en dehors des archives).
D'autre part, /optest un répertoire pour l'installation de packages non groupés (c'est-à-dire que les packages ne font pas partie de la distribution du système d'exploitation, mais fournis par une source indépendante), chacun dans son propre sous-répertoire. Ils constituent déjà des packages complets fournis par un distributeur de logiciels tiers indépendant. Contrairement aux /usr/localchoses, ces paquets respectent les conventions de répertoires (ou du moins ils le devraient). Par exemple, someappserait installé dans /opt/someapp, avec l'une de ses commandes /opt/someapp/bin/foo, son fichier de configuration /etc/opt/someapp/foo.conf, ainsi que ses fichiers journaux /var/opt/someapp/logs/foo.access.
/usr/locals'agit d'une version locale du/usrsystème de fichiers, alors qu'elle/optest réservée à divers éléments.