ความแตกต่างระหว่าง / bin และ / usr / bin


83

ฉันอ่านมันบนเว็บไซต์นี้และมันก็ไม่สมเหตุสมผล

http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html

เมื่อ UNIX ถูกเขียนขึ้นครั้งแรก/binและ /usr/binอาศัยอยู่ในดิสก์ที่แตกต่างกันสองแผ่น: /binอยู่ในดิสก์ที่เล็กกว่า (แพงกว่า) และเร็วกว่าดิสก์/usr/binที่ใหญ่กว่า ตอนนี้/binเป็นลิงก์สัญลักษณ์ไปที่ /usr/bin: พวกเขาเป็นไดเรกทอรีเดียวกัน

แต่เมื่อคุณโฟลเดอร์ก็มีเนื้อหาน้อยกว่าโฟลเดอร์ (อย่างน้อยในระบบการทำงานของฉัน)ls/bin/usr/bin

ดังนั้นใครบางคนสามารถอธิบายความแตกต่างได้ไหม?


พวกนั้นไม่ได้พูดถึงเครื่องจักรที่เฉพาะเจาะจงเหรอ?
tshepang

1
@tshepang ดีถ้าคุณให้คลิกขึ้นในบทความที่คุณจะสามารถเข้าถึงความรู้เบื้องต้น Basic เพื่อ Unix ดังนั้นฉันจะบอกว่าไม่พวกเขาไม่ได้พูดถึงเครื่องจักรที่เฉพาะเจาะจง
xenoterracide

3
@xeno ใช่ฉันทำ แต่ไม่ได้ติดอยู่นานพอ ในกรณีนั้นหน้านั้นจะต้องถูกลบออก ดังนั้นการทำให้เข้าใจผิด
tshepang

3
เอกสารดังกล่าวถือได้ว่าเป็น 'การอ้างอิงทางประวัติศาสตร์' หากคุณดูที่หน้า "เกี่ยวกับเอกสารนี้" คุณจะเห็นว่าลิขสิทธิ์ถูกสร้างสรรค์ในปี 1993 หากคุณดูที่บรรณานุกรมเป็นแหล่งที่มาล่าสุดคือ 1997 ระบบปฏิบัติการแบบยูนิกซ์ที่เป็นที่นิยมส่วนใหญ่ได้เปลี่ยนไปอย่างมากตั้งแต่ แล้วก็
เกบ

1
ทุกคนที่สนใจในประวัติศาสตร์ของการกำหนดค่านี้ควรอ่านสิ่งนี้: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

คำตอบ:


73

อะไร? ไม่ใช่/bin/ไม่ใช่ symlink ไปยัง/usr/binระบบที่เป็นไปตาม FHS โปรดทราบว่ายังมี Unices และLinux ยอดนิยมที่ไม่สนใจสิ่งนี้ - /binและเชื่อม/sbinโยงกับ/usr/binบน Arch Linux (เหตุผลที่คุณไม่ต้องการ/binช่วยเหลือ / ผู้ใช้โหมดเดียวเนื่องจากคุณเพิ่งบู๊ตสด CD)

/bin

มีคำสั่งที่อาจถูกใช้โดยทั้งผู้ดูแลระบบและโดยผู้ใช้ แต่จำเป็นต้องใช้เมื่อไม่มีการติดตั้งระบบไฟล์อื่น (เช่นในโหมดผู้ใช้คนเดียว) มันอาจมีคำสั่งที่ใช้งานโดยอ้อมโดยสคริปต์

/usr/bin/

นี่เป็นไดเรกทอรีหลักของคำสั่งที่รันได้บนระบบ

โดยพื้นฐานแล้วจะ/binมีไฟล์เรียกทำงานที่ระบบต้องการสำหรับการซ่อมแซมฉุกเฉินการบู๊ตและโหมดผู้ใช้เดี่ยว /usr/binมีไบนารีใด ๆ ที่ไม่จำเป็น

ผมจะทราบว่าพวกเขาสามารถอยู่บนดิสก์แยกต่างหาก / พาร์ทิชันจะต้องอยู่บนดิสก์เดียวกับ/bin สามารถอยู่ในดิสก์อื่น - แม้ว่าโปรดทราบว่าการกำหนดค่านี้ได้รับความเสียหายในขณะที่ (นี่คือเหตุผลเช่น systemd เตือนเกี่ยวกับการกำหนดค่านี้ในการบูต)//usr/bin

เพื่อความถูกต้องเต็มรูปแบบยูนิเซฟบางคนอาจเพิกเฉยต่อ FHS เนื่องจากฉันเชื่อว่ามันเป็นเพียงมาตรฐาน Linux ฉันไม่ทราบว่ามันได้รวมอยู่ใน SUS, Posix หรือมาตรฐาน UNIX อื่น ๆ แม้ว่ามันควรจะเป็น IMHO มันเป็นส่วนหนึ่งของมาตรฐานLSBแม้ว่า


หมายความว่าฉันสามารถแบ่งปัน / usr / bin ระหว่างสอง distros ได้หรือไม่ เช่นอูบุนตู 10.04 และ 10.10?
balki

4
@balki ไม่พวกเขายังคงต้องเชื่อมโยงอย่างถูกต้องซึ่งหมายความว่าพวกเขาจะต้องใช้ libs รุ่นที่ถูกต้องที่พวกเขาสร้างขึ้น
xenoterracide

6
/binลิงก์ไปยัง/usr/binในบาง Unices เช่น (บางรุ่นของ) Solaris
Gilles

1
@balki คุณอาจแชร์/usrระหว่าง distro สองอันที่คล้ายกันมากแม้ว่าฉันจะไม่ลองจนกว่าคุณจะรู้ว่าคุณกำลังทำอะไรอยู่และคุณพร้อมสำหรับการทดสอบที่ล้มเหลวในแบบที่ทำให้คอมพิวเตอร์ไม่บูตหรือกิน ข้อมูลของคุณ นอกจากนี้โปรดทราบว่าความแตกต่างที่สำคัญระหว่าง 10.04 และ 10.10 จะอยู่ใน/usr
xenoterracide

2
นอกจากนี้ยังขอรวม / usr / local / bin ไว้ด้วยซึ่งเป็นโปรแกรมที่ไม่ได้รวมอยู่ในการกระจายของคุณ แต่มีไว้สำหรับการใช้งานทั้งระบบ
Donato

56

/sbin - ไบนารีที่จำเป็นสำหรับการบูทการซ่อมแซมระบบระดับต่ำหรือการบำรุงรักษา (รันระดับ 1 หรือ S)

/bin - ไบนารีที่จำเป็นสำหรับการทำงานปกติ / ระบบมาตรฐานในทุกระดับการรัน

/usr/bin - แอปพลิเคชัน / ไบนารีการกระจายหมายถึงการเข้าถึงโดยผู้ใช้ที่ล็อกอินในเครื่อง

/usr/sbin - แอพพลิเคชัน / การกระจายไบนารีที่สนับสนุนหรือกำหนดค่าเนื้อหาใน / sbin

/usr/share/bin - แอปพลิเคชัน / การกระจายไบนารีหรือสคริปต์หมายถึงการได้รับผ่านทางเว็บเช่น Apache เว็บแอปพลิเคชัน

*local*- ไบนารีไม่ได้เป็นส่วนหนึ่งของการกระจาย; รวบรวมในท้องถิ่นหรือติดตั้งด้วยตนเอง มีปกติไม่เคย/local/binแต่เสมอและ/usr/local/bin/usr/local/share/bin


4
โอ้และคุณสามารถใส่สิ่งเหล่านี้ลงในดิสก์หรือพาร์ติชั่นแยกต่างหากได้หากต้องการเพื่อความปลอดภัยหรืออะไรก็ตาม แนวคิดคือคุณสามารถเพิ่ม / usr และระบบจะมีทุกอย่างที่จำเป็นสำหรับการทำงานขั้นพื้นฐาน แต่ไม่สามารถเรียกใช้แอปพลิเคชันที่ไม่ใช่ระบบได้
LawrenceC

1
ฉันหวังว่าฉันจะได้รู้จักเมื่อหลายปีก่อน คำอธิบายที่ดีที่สุดที่ฉันเคยเห็น ฉันไม่สามารถพูดได้ว่าฉันดูยากมาก แต่ในที่สุดก็ดีใจที่รู้คำตอบ
เดวิด

2
นี่คือคำตอบที่ดี ฉันจะบริจาคให้คุณ 10 คะแนนของฉันเองถ้าฉันสามารถ
สัตว์สะเทินน้ำสะเทินบก

@ultrasawblade ถูก/usr/binยกเลิกการต่อเชื่อมโดยอัตโนมัติเมื่อไม่มีผู้ใช้ที่ลงชื่อเข้าใช้หรือไม่ ตัวอย่างเช่นเมื่อ LINUX บูทและแสดงการรับรองความถูกต้องเข้าสู่ระบบถูก/usr/binเมาท์หรือไม่?

1
ไม่มันถูกเมานท์ตอนบูตและยังคงติดตั้งอยู่จนกว่าคุณจะยกเลิกการต่อเชื่อมเว้นแต่ว่าระบบของคุณได้รับการกำหนดค่าอย่างผิดปกติ
LawrenceC

17

"update" บางอย่างเกี่ยวกับปัญหานี้:

เมื่อเร็ว ๆ นี้บางลินุกซ์กำลังผสาน/binเข้า/usr/binและเกี่ยวเนื่องเข้า/lib /usr/libบางครั้งก็(/usr)/sbinถึง/usr/bin(Arch Linux) ดังนั้นคาดว่าจะสามารถใช้ได้ในเวลาเดียวกับที่/usr/

ความแตกต่างระหว่างลำดับชั้นทั้งสองนั้นมีความซับซ้อนที่ไม่จำเป็นในตอนนี้ ความคิดครั้งหนึ่งเคยมี/binให้เฉพาะตอนบูท แต่การมีramdisk เริ่มต้นทำให้สิ่งนี้ล้าสมัย

ฉันรู้ว่า Fedora Linux (2011) และ Arch Linux (2012) เป็นไปในลักษณะนี้และ Solaris กำลังทำสิ่งนี้เป็นเวลานาน (> 15 ปี)


8

บน Linux /binและ/usr/binยังคงแยกกันอยู่เนื่องจากเป็นเรื่องปกติที่จะมี/usrในพาร์ติชันแยกต่างหาก (แม้ว่าการกำหนดค่านี้จะแบ่งออกเป็นหลาย ๆ ทาง) ใน/binคือคำสั่งทั้งหมดที่คุณจะต้องใช้หากคุณได้/ติดตั้งเท่านั้น

บน Solaris และประตูชัยลินุกซ์ (และอาจจะคนอื่น ๆ ) /binเป็น symlink /usr/binไป Arch ยังได้/sbinและ/usr/sbinsymlinked /usr/binไป

จากหมายเหตุเฉพาะข้อความที่ใช้/binสำหรับคำสั่ง "ผู้ดูแลระบบ" และ/usr/binสำหรับคำสั่งของผู้ใช้นั้นไม่เป็นความจริง (เว้นแต่คุณจะคิดbashและlsใช้สำหรับผู้ดูแลระบบเท่านั้นซึ่งในกรณีนี้คุณจะต้องเรียนรู้มากมาย) คำสั่งของผู้ดูแลระบบอยู่ในและ/sbin/usr/sbin


1
ใครบอกว่าbinมีไว้สำหรับผู้ดูแลระบบเท่านั้น? นั่นคือสิ่งที่sbinมีไว้เพื่อ
xenoterracide

พูดผิดคุณ ขออภัยฉันอ่านเร็วเกินไป
bahamat

5

มีระบบที่ใช้ UNIX หลายระบบ Linux, AIX, Solaris, BSD และอื่น ๆ คำพูดดั้งเดิมให้บริบททางประวัติศาสตร์ที่ใช้กับรสชาติทั้งหมด หากคุณดูระบบใดระบบหนึ่งคุณจะเห็นผลลัพธ์ที่แตกต่างกัน ประโยคสุดท้ายของข้อความต้นฉบับนั้นมีความเฉพาะกับบางเวอร์ชั่นและดิสทริบิวชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.