ในขณะที่ทั้งสองถูกออกแบบมาเพื่อให้มีไฟล์ที่ไม่ได้เป็นของระบบปฏิบัติการ/optและ/usr/localไม่ได้ตั้งใจที่จะมีไฟล์ชุดเดียวกัน
/usr/localเป็นสถานที่สำหรับติดตั้งไฟล์ที่สร้างโดยผู้ดูแลระบบโดยทั่วไปจะใช้makeคำสั่ง (เช่น./configure; make; make install) แนวคิดคือการหลีกเลี่ยงการปะทะกับไฟล์ที่เป็นส่วนหนึ่งของระบบปฏิบัติการซึ่งอาจถูกเขียนทับหรือเขียนทับโลคัลมิฉะนั้น (เช่น/usr/bin/fooเป็นส่วนหนึ่งของระบบปฏิบัติการในขณะที่/usr/local/bin/fooเป็นทางเลือกในท้องถิ่น)
ไฟล์ทั้งหมดภายใต้/usrสามารถใช้ร่วมกันได้ระหว่างอินสแตนซ์ของระบบปฏิบัติการแม้ว่าจะไม่ค่อยมีใน Linux นี่เป็นส่วนที่ FHS ขัดแย้งกันเองเล็กน้อยตามที่/usrกำหนดให้เป็นแบบอ่านอย่างเดียว แต่/usr/local/binต้องอ่านแบบเขียนเพื่อให้การติดตั้งซอฟต์แวร์ในท้องถิ่นสำเร็จ มาตรฐานระบบไฟล์ SVR4 ซึ่งเป็นแรงบันดาลใจหลักของ FHS แนะนำให้หลีกเลี่ยง/usr/localและใช้/opt/localแทนเพื่อเอาชนะปัญหานี้
/usr/localเป็นมรดกจาก BSD ดั้งเดิม ในเวลานั้นซอร์สโค้ดของ/usr/binคำสั่งระบบปฏิบัติการอยู่ใน/usr/src/binและ/usr/src/usr.binในขณะที่แหล่งที่มาของคำสั่งที่พัฒนาในประเทศอยู่ใน/usr/local/srcและไบนารีของพวกเขา/usr/local/binมา ไม่มีความคิดเกี่ยวกับบรรจุภัณฑ์ (tarballs ภายนอก)
ในทางตรงกันข้าม/optเป็นไดเรกทอรีสำหรับการติดตั้งแพคเกจ unbundled (เช่นแพคเกจไม่ได้เป็นส่วนหนึ่งของการกระจายระบบปฏิบัติการ แต่จัดทำโดยแหล่งที่มาอิสระ) แต่ละคนในไดเรกทอรีย่อยของตัวเอง พวกเขาสร้างแพคเกจทั้งหมดแล้วโดยผู้จัดจำหน่ายซอฟต์แวร์บุคคลที่สามที่เป็นอิสระ /usr/localแพ็กเกจเหล่านี้จะแตกต่างจากของอื่น ๆ ตามแพ็คเกจ (หรืออย่างน้อยก็ควร) ยกตัวอย่างเช่นsomeappจะได้รับการติดตั้งใน/opt/someappหนึ่งของการเป็นคำสั่ง/opt/someapp/bin/foo, แฟ้มการกำหนดค่าของมันจะเป็นในและไฟล์บันทึกใน/etc/opt/someapp/foo.conf/var/opt/someapp/logs/foo.access
/usr/localเป็นระบบโลคัลเวอร์ชัน/usrในขณะที่/optเป็นตัวยึดตำแหน่งสำหรับสิ่งอื่น ๆ