มีคู่มือหรือคำแนะนำเกี่ยวกับไดเรกทอรีในตัวทั้งหมดที่ควรใช้หรือไม่ ชอบ / home /, หรือ / net / คืออะไร?
ลองดูที่คู่มือการเขียนโปรแกรมระบบไฟล์เพื่อดูข้อมูลล่าสุดและที่man hier
อยู่ใน Terminal ซึ่งมี "ภาพร่างประวัติศาสตร์" ของลำดับชั้นของระบบไฟล์ (ซึ่งรวมอยู่ท้ายคำตอบนี้สำหรับการอ้างอิง)
ความคิดเห็นสำหรับคำถามของคุณกล่าวถึงระบบแฟ้มลำดับชั้นมาตรฐาน คุณอาจจะได้ข้อสรุปหลังจากอ่านคู่มือการเขียนโปรแกรมระบบไฟล์แล้วและman hier
macOS นั้นไม่ได้ทำตามFHSนั่นเป็นเรื่อง Linux มากกว่า แน่นอนว่ามีความคล้ายคลึงกันระหว่าง FHS และโครงร่างระบบไฟล์ใน macOS เนื่องจากต้นกำเนิด UNIX ทั่วไป แต่ความแตกต่างนั้นโดดเด่น macOS ไม่ได้ใช้สิ่งเหล่านี้:
/boot
โฟลเดอร์ -> macOS ใช้/System/Library/Kernels
แทน (ใน macOS เวอร์ชันเก่า, โฟลเดอร์ที่มีเคอร์เนลคือ/
)
/home
โฟลเดอร์ -> macOS ใช้/Users
แทน
/root
โฟลเดอร์ -> macOS ใช้/var/root
แทน
และ/opt
ไม่ได้กล่าวถึงไม่ใช่ครั้งเดียวในเอกสารใด ๆ (เพิ่มเติม/opt
ด้านล่าง)
distiction ระหว่าง MacOS และ FHS ที่สอดคล้องกับระบบปฏิบัติการคือการใช้/private
ตัวอย่างเช่น/etc
เป็นsymlink/private/etc
ไป
เกี่ยวกับ/net
: เป็นแผนที่ automounter (อยู่ในรายการ/etc/auto_master
), ดูWikipediaสำหรับข้อมูลเพิ่มเติม
สิ่งที่ควรทำและควรเข้า / เลือก / และควรทำอะไร / เข้าสู่ / usr / ความเข้าใจของฉันคือ / usr / เคยเป็นไดเรกทอรีบ้านของผู้ใช้ แต่เนื่องจากที่มีอยู่ใน / Users / - วัตถุประสงค์ตอนนี้คืออะไร?
แม้ว่าจะ/usr
ถูกนำมาใช้ในอดีตที่จะวางไดเรกทอรีบ้านของผู้ใช้ที่ไม่มีกรณี
ทุกวันนี้/usr
มีคำสั่งผู้ใช้ ( /usr/bin
สำหรับผู้ใช้ปกติและ/usr/sbin
สำหรับผู้ใช้ที่เป็นผู้ดูแลระบบเช่นroot
), ไลบรารีที่แบ่งใช้ ( /usr/lib
), man pages ( /usr/share/man
), ไฟล์ปฏิบัติการที่ไม่ควรเรียกใช้โดยตรงจากผู้ใช้ ( /usr/libexec
) และอื่น ๆ
นอกจากนี้ยังมีไดเรกทอรีย่อย/usr/local
เพื่อวางโปรแกรมไลบรารีและไฟล์อื่น ๆ ที่ไม่ได้มาพร้อมกับระบบปฏิบัติการพื้นฐาน
/opt
มีบทบาทคล้ายกันมาก/usr/local
และพวกเขาดูเหมือนจะใช้แทนกันได้ อย่างไรก็ตามจากประสบการณ์ของฉันที่ทำงานร่วมกับ sysadmins Linux / UNIX อื่น ๆ ดูเหมือนว่าจะมีการตั้งค่าสำหรับ/usr/local
ระบบปฏิบัติการ UNIX บน BSD
ดังนั้นนี่คือเวลาของฉันที่มัน: MacOS เป็น BSD-based /usr/local
และดังนั้นฉันต้องการใช้ โปรดทราบว่าคุณสามารถสร้างไดเรกทอรีโปรแกรมและจากนั้น symlink คำสั่งไปที่/usr/local/bin
ฯลฯ ตัวอย่างเช่น:
/usr/local/mysql
/usr/local/mysql/bin/mysqladmin
/usr/local/mysql/lib/libmysqlclient.so
/usr/local/bin/mysqladmin -> ../mysql/bin/mysqladmin
/usr/local/lib/libmysqlclient.so -> ../mysql/lib/libmysqlclient.so
สิ่งนี้เคยเป็นแบบฝึกหัดปกติใน Linux และ UNIX เช่นกัน แต่ FHS อธิบายอย่างชัดแจ้งห้าม : หากคุณต้องการติดตั้งแพ็คเกจบุคคลที่สามในลำดับชั้นไดเรกทอรีของตนเองคุณควรใช้/opt/<package>
แทน โปรดทราบว่า FHS ปฏิบัติต้องใส่แฟ้มการกำหนดค่าในและไฟล์ตัวแปรใน/etc/opt/<package>
/var/opt/<package>
ดังนั้นใน macOS ฉันขอแนะนำให้คุณทำ/usr/local
ตามที่อธิบายไว้ข้างต้น
ฉันตระหนักถึงซอฟต์แวร์เสริมเช่น Cisco VPN และXQuartzที่ติดตั้ง/opt
ดังนั้นความแตกต่างด้านบนจึงเริ่มเบลอ
man hier
ดังกล่าวข้างต้นนี้คือman hier
:
A historical sketch of the filesystem hierarchy. The modern macOS filesystem is documented in the
``File System Programming Guide'' available on Apple Developer.
/ root directory of the filesystem
/bin/ user utilities fundamental to both single-user and multi-user environments
/dev/ block and character device files
fd/ file descriptor files; see fd(4)
/etc/ system configuration files and scripts
/mach_kernel kernel executable (the operating system loaded into memory at boot time).
/sbin/ system programs and administration utilities fundamental to both single-user and multi-
user environments
/tmp/ temporary files
/usr/ contains the majority of user utilities and applications
bin/ common utilities, programming tools, and applications
include/ standard C include files
arpa/ C include files for Internet service protocols
hfs/ C include files for HFS
machine/ machine specific C include files
net/ misc network C include files
netinet/ C include files for Internet standard protocols; see inet(4)
nfs/ C include files for NFS (Network File System)
objc/ C include files for Objective-C
protocols/ C include files for Berkeley service protocols
sys/ system C include files (kernel data structures)
ufs/ C include files for UFS
lib/ archive libraries
libexec/ system daemons & system utilities (executed by other programs)
local/ executables, libraries, etc. not included by the basic operating system
sbin/ system daemons & system utilities (executed by users)
share/ architecture-independent data files
calendar/ a variety of pre-fab calendar files; see calendar(1)
dict/ word lists; see look(1)
web2 words from Webster's 2nd International
words common words
man/ manual pages
misc/ misc system-wide ascii text files
mk/ templates for make; see make(1)
skel/ example . (dot) files for new accounts
tabset/ tab description files for a variety of terminals; used in the term-
cap file; see termcap(5)
zoneinfo/ timezone configuration information; see tzfile(5)
/var/ multi-purpose log, temporary, transient, and spool files
at/ timed command scheduling files; see at(1)
backups/ misc. backup files
db/ misc. automatically generated system-specific database files
log/ misc. system log files
mail/ user mailbox files
run/ system information files describing various info about system since it was
booted
utmpx database of current users; see utmpx(5)
rwho/ rwho data files; see rwhod(8), rwho(1), and ruptime(1)
spool/ misc. printer and mail system spooling directories
mqueue/ undelivered mail queue; see sendmail(8)
tmp/ temporary files that are kept between system reboots
folders/ per-user temporary files and caches