Câu hỏi Sự khác nhau giữa / bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin


Tôi có sáu thư mục với các tập tin lệnh. đó là /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin và /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 ở đâu?


Liên quan:


223
2018-06-14 07:13


gốc


Câu hỏi liên quan: unix.stackexchange.com/questions/8656/… - Gabriel Staples
@Keelan Câu hỏi của bạn gần với câu hỏi tôi đã đăng một năm + trước đây: askubuntu.com/questions/830074/… - WinEunuuchs2Unix


Các câu trả lời:


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

  • /bin : Đối với các tệp nhị phân có thể sử dụng trước /usr phâ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 trong chế độ khởi động đơn người dùng. Hãy nghĩ về các tệp nhị phân như cat, ls, v.v.

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

  • /usr/bin : Giống như đầu tiên, nhưng đối với các tệp 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) bắt buộc.


nếu tôi viết kịch bản của riêng mình, tôi nên thêm những đoạn mã này ở đâu?

Không có điều nào ở trên. Bạn nên sử dụng /usr/local/bin hoặc là /usr/local/sbin cho các tập lệnh có sẵn trên toàn hệ thống. Các local đường dẫn có nghĩa là nó không được quản lý bởi các gói hệ thống (đây là một lỗi cho các gói Debian / Ubuntu).

Dành cho kịch bản có phạm vi người dùng, sử dụng ~/bin (một thư mục bin cá nhân trong thư mục chính của bạn).

FHS nói cho /usr/local:

Phân cấp đại học cho dữ liệu cục bộ, cụ thể cho máy chủ lưu trữ này. Thông thường có các thư mục con khác, ví dụ: bin/, lib/, share/.


293
2018-06-14 07:17



/ bin là nơi tất cả các tệp lõi được cài đặt. như ls, mèo, pwd, v.v ...? Vì 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 パトシ
Có đặt kịch bản trong /bin gây ra bất kỳ vấn đề gì? Tôi đã di chuyển kịch bản của tôi theo câu trả lời của bạn nhưng tôi vẫn tò mò - Rumesh
@ RumeshSudhaharan bạn không nên làm điều đó, bởi vì nó được quản lý bởi quản lý gói. 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à đối với các kho lưu trữ 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ỉ cho sự 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 hỏng hệ thống theo cách xấu và bạn không thể vô tình thay thế một hệ nhị phân. - gertvdijk
Tôi thích lời giải thích trên trang lỗi: Severity:Serious Certainty:Certain - cutrightjm
Tôi đã đặt một số tệp trong / 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 -la không có gì - M. Reza Nasirloo


Tôi đã có một câu hỏi tương tự bản thân mình 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 tệp nhị phân

man hier (phân cấp) liệt kê tất cả các thư mục. Để có được những ngườ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 kịch bản của riêng bạn?

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

Đối với tập lệnh ID người dùng của riêng bạn, hãy đặ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: Cách thêm / home / username / bin vào $ PATH?


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

Tôi đang dự tính dùng một số tập lệnh bash phức tạp hơn của tôi 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 suy nghĩ các tập lệnh sẽ được cài đặt trong /usr/bin nằm trong $ PATH, nhưng tôi chưa chắc chắn về địa điểm thích hợp.


3
2018-06-11 23:44



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
@ danzel Tôi nghĩ phần quan trọng là man hier phần mà câu trả lời của gertvdijk không giải quyết. tức là bạn có thể nhận được cấu trúc phân cấp thư mục trong dòng lệnh mà không cần phải sử dụng để đọc nó trên web (tức là ở đây). - WinEunuuchs2Unix
đó 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 (mà man hier là một đoạn trích IMO không đủ thông tin). 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ó nhiều phân tích sâu hơn 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 trên ổ cứng của chúng tôi mà không cần sử dụng Internet. Bên cạnh liên kết wikipedia được trích dẫn là còn thiếu  /usr/X11R6/bin và /usr/local/bin được bao gồm trong man heir. - WinEunuuchs2Unix