Відмінності між / bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin


282

У мене є шість каталогів з командними файлами. Це /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/binі /usr/local/sbin.

Які відмінності між ними? Якщо я пишу свої власні сценарії, куди їх додати?


Пов'язані:


1
Питання, пов’язані з цим: unix.stackexchange.com/questions/8656/…
Габріель

@Keelan Ваше питання близьке до питання, яке я опублікував рік тому: askubuntu.com/questions/830074/…
WinEunuuchs2Unix

Відповіді:


348

Для цього зверніться до стандарту ієрархії файлової системи (FHS) для Linux .

  • /bin: Для бінарних файлів, які можна використовувати до /usrмонтажу розділу. Це використовується для тривіальних двійкових файлів, які використовуються на ранній стадії завантаження, або тих, які вам потрібно мати у завантаженні для одного користувача. Подумайте про бінарних файлах , таких як cat, lsі т.д.

  • /sbin : Те саме, але для двійкових файлів із правами суперпользователя (root) потрібні .

  • /usr/bin: Те саме, що і перше, але для загальних системних двійкових файлів .

  • /usr/sbin : Те саме, що вище, але для двійкових файлів із правами суперпользователя (root) потрібні.


якщо я пишу свої власні сценарії, куди слід їх додати?

Жодні з вищезазначених. Ви повинні використовувати /usr/local/binабо /usr/local/sbinдля загальносистемних доступних сценаріїв. localШлях означає , що він не керує пакетами системи (це помилка для пакетів Debian / Ubuntu).

Для сценаріїв , визначених користувачем, використовуйте ~/bin(особисту папку бін у вашому домашньому каталозі).

FHS говорить за /usr/local:

Третя ієрархія місцевих даних, специфічна для цього хоста . Як правило , має додаткові підкаталоги, наприклад, bin/, lib/, share/.


so / bin - це встановлення всіх основних файлів. як ls, cat, pwd тощо? Отже, / usr / bin є де встановлені користувачем програми? які кілька прикладів того, що має бути у / usr / bin?
Патоші パ ト シ

1
Чи розміщення сценаріїв /binвикликає якісь проблеми? Я перемістив свої сценарії відповідно до вашої відповіді, але мені все ще цікаво
Румеш,

5
@RumeshSudhaharan ви не повинні цього робити, оскільки цим керує управління пакетом. Якщо будь-який інший пакет також хоче використовувати цей шлях, він замінить ваш файл. Файли в пакетах ніколи не можуть перетинатися (принаймні, для офіційних сховищ), тому ви більш безпечні при установці в локальний шлях. Крім того, це просто для вашої власної зручності та безпеки. У локальному шляху ви не можете зіпсувати систему настільки погано, і не можете випадково замінити системний бінарний файл.
gertvdijk

8
Мені подобається пояснення на сторінці помилок:Severity:Serious Certainty:Certain
cutrightjm

1
Я помістив деякі файли в / usr / local / bin і можу їх виконати, однак я не можу їх редагувати, ls -laнічого не показує
M. Reza Nasirloo

6

У мене було подібне запитання рік тому: Найкращий каталог для розміщення моїх скриптів bash?

Системні каталоги для двійкових файлів

man hier(ієрархія) перераховує всі каталоги. Щоб отримати ті лише для двійкових файлів, використовуйте:

$ 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

Куди розмістити власні сценарії?

Щоб усі користувачі отримали доступ до ваших сценаріїв, ви можете розмістити їх /usr/local/bin. Майте на увазі, що вам потрібно sudoотримати доступ, щоб додати / змінити файли тут. Див.: Чи є стандартне місце для розміщення спеціальних сценаріїв Linux?

Для власних скриптів ідентифікатора користувача введіть їх /home/YOUR_NAME/bin. Майте на увазі, що вам слід спершу створити цей каталог та перезапустити термінал, щоб автоматично встановити шлях ~/.profile. Див.: Як додати / home / username / bin до $ PATH?


Що я знаю, я не знаю

Я розглядаю, як взяти кілька моїх складніших bash-скриптів у Ask Ubuntu та налаштувати їх із встановленими сценаріями github. Ось кілька прикладів:

Я думаю , що сценарії повинні бути встановлені в /usr/binякий знаходиться в $ PATH, але я не впевнений , що на відповідному місці ще.


1
Я ціную ваші зусилля, але, окрім частини "Що я знаю, я не знаю", ви повторили відповідь gertvdijk.
danzel

1
@danzel Я думаю, що ключовою частиною є man hierрозділ, на який відповідь gertvdijk не звернулася. тобто ви можете отримати ієрархічну структуру каталогів у командному рядку, не вдаючись до читання в Інтернеті (тобто тут).
WinEunuuchs2Unix

1
це цікава інформація, я згоден. Але gertvdijk вже згадував стандарт ієрархії файлової системи (що man hierє інформаційно недостатнім уривком ІМО). Однак це може бути моя особиста думка.
danzel

@danzel Я погоджуюся, що веб-сайти мають набагато більш глибокий аналіз, ніж те, що є на наших жорстких дисках. Я лише намагаюся зазначити, що інформація є на наших жорстких дисках, не вдаючись до Інтернету. Окрім цього, посилання на вікіпедію відсутнє /usr/X11R6/bin і /usr/local/binяке включено до цього man heir.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, останній пункт; Чому б ні, /usr/local/binоскільки ви не менеджер пакунків?
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.