it-swarm-vi.com

Sự khác biệt giữa / bin và / usr / bin

Tôi đọc nó trên trang web này và nó không có ý nghĩa.

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

Khi UNIX lần đầu tiên được viết, /bin/usr/bin vật lý nằm trên hai đĩa khác nhau: /bin đang ở trên một đĩa nhỏ hơn nhanh hơn (đắt hơn) và /usr/bin trên một đĩa chậm lớn hơn. Hiện nay, /bin là một liên kết tượng trưng đến /usr/bin: về cơ bản chúng là cùng một thư mục.

Nhưng khi bạn ls thì /bin thư mục, nó có nội dung ít hơn nhiều so với /usr/bin thư mục (ít nhất là trên hệ thống đang chạy của tôi).

Vì vậy, ai đó có thể vui lòng giải thích sự khác biệt?

92
whoami

Gì? không /bin/ không phải là một liên kết tượng trưng đến /usr/bin trên bất kỳ hệ thống tuân thủ FHS nào. Lưu ý rằng vẫn còn các Unice và Linux phổ biến bỏ qua điều này - ví dụ: /bin/sbin được liên kết với /usr/bin trên Arch Linux (lý do là bạn không cần /bin để giải cứu/chế độ một người dùng, vì bạn chỉ cần khởi động một đĩa CD trực tiếp).

/bin

chứa các lệnh có thể được sử dụng bởi cả quản trị viên hệ thống và người dùng, nhưng được yêu cầu khi không có hệ thống tệp nào khác được gắn kết (ví dụ: trong chế độ người dùng đơn). Nó cũng có thể chứa các lệnh được sử dụng gián tiếp bởi các tập lệnh

/usr/bin/

Đây là thư mục chính của các lệnh thực thi trên hệ thống.

bản chất, /bin chứa các tệp thực thi được hệ thống yêu cầu để sửa chữa khẩn cấp, khởi động và chế độ người dùng. /usr/bin chứa bất kỳ nhị phân nào không cần thiết.

Tôi sẽ lưu ý rằng chúng có thể nằm trên các đĩa/phân vùng riêng biệt, /bin phải nằm trên cùng một đĩa với /. /usr/bin có thể nằm trên một đĩa khác - mặc dù lưu ý rằng cấu hình này đã bị hỏng trong một thời gian (đây là lý do tại sao systemd cảnh báo về cấu hình này khi khởi động).

Để hoàn toàn chính xác, một số thông báo có thể bỏ qua FHS, vì tôi tin rằng đó chỉ là một Tiêu chuẩn Linux, tôi không biết rằng nó đã được đưa vào SUS, Posix hoặc bất kỳ tiêu chuẩn UNIX nào khác, mặc dù nó phải là IMHO. Nó là một phần của LSB tiêu chuẩn mặc dù.

79
xenoterracide

Cập nhật: Đối với một số lịch sử và lý do thực sự tại sao có /usr, Hãy đọc phần này: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html . Ngoài ra này .


/sbin - Các mã nhị phân cần thiết để khởi động, sửa chữa hệ thống cấp thấp hoặc bảo trì (chạy cấp 1 hoặc S)

/bin - Các nhị phân cần thiết cho hoạt động bình thường/hệ thống tiêu chuẩn ở mọi cấp độ chạy.

/usr/bin - Các nhị phân ứng dụng/phân phối có thể được truy cập bởi người dùng đã đăng nhập cục bộ

/usr/sbin - Các nhị phân ứng dụng/phân phối hỗ trợ hoặc định cấu hình nội dung trong/sbin.

/usr/share/bin - Các nhị phân hoặc tập lệnh phân phối hoặc ứng dụng được tích lũy thông qua web, tức là các ứng dụng web Apache

*local* - Các nhị phân không phải là một phần của phân phối; biên dịch cục bộ hoặc cài đặt thủ công. Thường không bao giờ có /local/bin Mà luôn luôn là /usr/local/bin/usr/local/share/bin.

59
LawrenceC

Một số loại "cập nhật" về vấn đề này:

Gần đây, một số bản phân phối Linux đang hợp nhất /bin thành /usr/bin và liên quan /lib thành /usr/lib. Thỉnh thoảng cũng (/usr)/sbin đến /usr/bin (Arch Linux). Vì thế /usr dự kiến ​​sẽ có sẵn cùng lúc với /.

Sự khác biệt giữa hai hệ thống phân cấp được coi là phức tạp không cần thiết bây giờ. Ý tưởng đã từng chỉ có /bin khả dụng khi khởi động, nhưng có ramdisk ban đầ làm cho điều này trở nên lỗi thời.

Tôi biết Fedora Linux (2011) và Arch Linux (2012) đang đi theo hướng này và Solaris đang làm điều này trong một thời gian dài (> 15 năm).

18
JonnyJD

Trên Linux /bin/usr/bin vẫn riêng biệt vì thường có /usr trên một phân vùng riêng (mặc dù đôi khi cấu hình này bị hỏng theo những cách tinh tế). Trong /bin là tất cả các lệnh mà bạn sẽ cần nếu bạn chỉ có / gắn kết.

Trên Solaris và Arch Linux (và có thể là những người khác) /bin là một liên kết tượng trưng đến /usr/bin. Arch cũng có /sbin/usr/sbin được liên kết với /usr/bin.

Đặc biệt lưu ý, tuyên bố rằng /bin dành cho các lệnh "quản trị hệ thống" và /usr/bin dành cho lệnh người dùng là không đúng (trừ khi bạn nghĩ rằng bashls chỉ dành cho quản trị viên, trong trường hợp đó bạn có rất nhiều thứ để học). Các lệnh quản trị viên nằm trong /sbin/usr/sbin.

8
bahamat

Có nhiều hệ thống dựa trên UNIX. Linux, AIX, Solaris, BSD, v.v ... Trích dẫn ban đầu đưa ra bối cảnh lịch sử áp dụng cho tất cả các hương vị. Nếu bạn nhìn vào bất kỳ một hệ thống cụ thể nào, bạn sẽ thấy các kết quả khác nhau. Câu cuối cùng của trích dẫn ban đầu chỉ dành riêng cho một số phiên bản và bản phân phối.

5
Chris Quenelle