Sự khác nhau giữa / bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin


282

Tôi có sáu thư mục với các tập tin lệnh. Đây là những /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin/usr/local/sbin.

Sự khác biệt giữa những điều này là gì? Nếu tôi đang viết kịch bản của riêng mình, tôi nên thêm chúng vào đâu?


Liên quan:



@Keelan Câu hỏi của bạn gần với một câu hỏi tôi đã đăng cách đây một năm + trước: askubfox.com/questions/830074/ Kẻ
WinEunuuchs2Unix

Câu trả lời:


348

Vui lòng tham khảo Tiêu chuẩn phân cấp hệ thống tập tin (FHS) cho Linux để biết điều này.

  • /bin: Đối với các tệp nhị phân có thể sử dụng trước khi /usrphân vùng được gắn kết. Điều này được sử dụng cho các nhị phân tầm thường được sử dụng trong giai đoạn khởi động rất sớm hoặc những thứ mà bạn cần phải có sẵn khi khởi động chế độ một người dùng. Hãy suy nghĩ về nhị phân như cat, lsvv

  • /sbin : Tương tự, nhưng đối với các tệp nhị phân có đặc quyền superuser (root) .

  • /usr/bin: Tương tự như đầu tiên, nhưng đối với các nhị phân toàn hệ thống .

  • /usr/sbin : Tương tự như trên, nhưng đối với các tệp nhị phân có đặc quyền superuser (root) được yêu cầu.


Nếu tôi đang viết kịch bản của riêng mình, tôi nên thêm chúng vào đâu?

Không có cái nào ở trên. Bạn nên sử dụng /usr/local/binhoặc /usr/local/sbincho các tập lệnh có sẵn trên toàn hệ thống. Đường localdẫn có nghĩa là nó không được quản lý bởi các gói hệ thống (đây là lỗi đối với các gói Debian / Ubuntu).

Đối với tập lệnh phạm vi người dùng , sử dụng ~/bin(thư mục bin cá nhân trong thư mục chính của bạn).

FHS nói cho /usr/local:

Hệ thống phân cấp thứ ba cho dữ liệu cục bộ, cụ thể cho máy chủ này . Thường có các thư mục con hơn nữa, ví dụ bin/, lib/, share/.


so / bin là nơi tất cả các tập tin cốt lõi được cài đặt. như ls, mèo, pwd, vv? Vậy, / usr / bin là nơi người dùng cài đặt ứng dụng? một số ví dụ về những gì nên có trong / usr / bin?
Patoshi パ ト

1
Có đặt kịch bản /bingây ra bất kỳ vấn đề? Tôi đã chuyển các kịch bản của mình theo câu trả lời của bạn nhưng tôi vẫn tò mò
Rumesh

5
@RumeshSudhaharan bạn không nên làm điều đó, bởi vì nó được quản lý bởi gói quản lý. Nếu bất kỳ gói nào khác cũng muốn sử dụng đường dẫn đó, nó sẽ ghi đè lên tệp của bạn. Các tệp trong các gói không bao giờ có thể chồng lấp (ít nhất là cho các kho chính thức), vì vậy bạn an toàn hơn khi cài đặt trong đường dẫn cục bộ. Ngoài ra, nó chỉ để thuận tiện và an toàn của riêng bạn. Trong một đường dẫn cục bộ, bạn không thể làm rối hệ thống theo cách tồi tệ như vậy và bạn không thể vô tình thay thế một hệ thống nhị phân.
gertvdijk

8
Tôi thích lời giải thích trên trang lỗi:Severity:Serious Certainty:Certain
cutrightjm

1
Tôi đã đặt một số tệp vào / usr / local / bin và tôi có thể thực thi chúng, tuy nhiên tôi không thể chỉnh sửa chúng, ls -lakhông hiển thị gì cả
M. Reza Nasirloo

6

Tôi đã có một câu hỏi tương tự một năm trước đây: Thư mục tốt nhất để đặt các tập lệnh bash của tôi?

Thư mục hệ thống cho nhị phân

man hier(phân cấp) liệt kê tất cả các thư mục. Để có được những cái chỉ cho nhị phân sử dụng:

$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2

       /bin   This directory contains executable programs which are needed in single user
              mode and to bring the system up or repair it.

--
       /sbin  Like  /bin,  this  directory  holds commands needed to boot the system, but
              which are usually not executed by normal users.

--
       /usr/X11R6/bin
              Binaries  which  belong  to the X-Window system; often, there is a symbolic
              link from the more traditional /usr/bin/X11 to here.
--
       /usr/bin
              This  is the primary directory for executable programs.  Most programs exe
              cuted by normal users which are not needed for booting or for repairing the
--
       /usr/local/bin
              Binaries for programs local to the site.

--
       /usr/local/sbin
              Locally installed programs for system administration.

--
       /usr/sbin
              This directory contains program binaries for  system  administration  which
              are  not  essential  for the boot process, for mounting /usr, or for system

Nơi để đặt các kịch bản của riêng bạn?

Đối với tất cả người dùng truy cập vào tập lệnh của bạn, bạn có thể đặt chúng vào /usr/local/bin. Hãy nhớ rằng bạn cần sudotruy cập để thêm / thay đổi tập tin ở đây. Xem: Có một nơi tiêu chuẩn để đặt các tập lệnh Linux tùy chỉnh không?

Đối với các tập lệnh ID người dùng của riêng bạn đặt chúng vào /home/YOUR_NAME/bin. Hãy nhớ rằng bạn phải tạo thư mục này trước và khởi chạy lại thiết bị đầu cuối để tự động thiết lập đường dẫn ~/.profile. Xem: Làm thế nào để thêm / home / tên người dùng / bin vào $ PATH?


Những gì tôi biết tôi không biết

Tôi đang dự tính lấy một số tập lệnh bash phức tạp hơn của mình trong Hỏi Ubuntu và thiết lập chúng với các tập lệnh cài đặt trên github. Dưới đây là một vài ví dụ:

Tôi nghĩ rằng các tập lệnh nên được cài đặt trong /usr/bin$ PATH, nhưng tôi chưa chắc chắn về vị trí thích hợp.


1
Tôi đánh giá cao nỗ lực của bạn, nhưng, ngoại trừ phần "Những gì tôi biết tôi không biết", bạn đã lặp lại câu trả lời của gertvdijk.
danzel

1
@danzel Tôi nghĩ phần quan trọng là man hierphần mà câu trả lời của gertvdijk không đề cập đến. tức là bạn có thể có được cấu trúc phân cấp thư mục trong dòng lệnh mà không cần phải đọc nó trên web (tức là ở đây).
WinEunuuchs2Unix

1
Đó là thông tin thú vị, tôi đồng ý. Nhưng gertvdijk đã đề cập đến Tiêu chuẩn phân cấp hệ thống tập tin ( man hierlà một đoạn trích không đủ thông tin của IMO). Tuy nhiên, đây có thể là ý kiến ​​cá nhân của tôi.
danzel

@danzel Tôi đồng ý các trang web có phân tích chuyên sâu hơn nhiều so với những gì trên ổ cứng của chúng tôi. Tôi chỉ cố gắng chỉ ra thông tin có trên ổ cứng của chúng tôi mà không cần dùng đến Internet. Bên cạnh đó, liên kết wikipedia được trích dẫn bị thiếu /usr/X11R6/bin/usr/local/binđược bao gồm trong man heir.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, lần cuối cùng; Tại sao không phải /usr/local/binvì bạn không phải là người quản lý gói?
Pacerier
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.