Різниця між / 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

То чи може хтось, будь ласка, пояснити різницю?


чи не ті хлопці говорять про конкретну машину?
thepang

1
@tshepang добре, якщо ви продовжуєте натискання, у статті ви перейдете до Основного вступу до UNIX / linux . Тож я б сказав, що ні, вони не говорять про конкретну машину
ксенотерацид

3
@xeno Так, я був, але не тримався досить довго. У цьому випадку цю сторінку потрібно зняти. Так вводять в оману.
thepang

3
Цей документ можна вважати "історичною довідкою". Якщо ви подивитесь на сторінку "про цей документ", то побачите, що вона була захищена авторським правом спочатку в 1993 році. Якщо ви подивитеся на бібліографію, це останнє джерело - 1997 рік. Більшість популярних unix-подібних операційних систем істотно змінилися тоді.
габе.

1
Усі, хто цікавиться історією
JDS

Відповіді:


73

Що? ні /bin/- це не посилання /usr/binна будь-яку систему, сумісну з FHS. Зауважте, що все ще є популярні Unices та Linuxes, які ігнорують це, наприклад, /binі /sbinпосилаються /usr/binна Arch Linux (аргументація полягає в тому, що вам не потрібно /binврятувати / однокористувацький режим, оскільки ви просто завантажуєте живу CD).

/bin

містить команди, які можуть використовуватися як адміністратором системи, так і користувачами, але які необхідні, коли не встановлено жодної іншої файлової системи (наприклад, в режимі одного користувача). Він також може містити команди, які опосередковано використовуються скриптами

/usr/bin/

Це основний каталог виконуваних команд у системі.

По суті, /binмістить виконувані файли, необхідні системі для аварійного ремонту, завантаження та режиму єдиного користувача. /usr/binмістить будь-які бінарні файли, які не потрібні.

Зауважу, що вони можуть бути на окремих дисках / розділах, /binповинні бути на тому ж диску, що і /. /usr/binможе бути на іншому диску, хоча зауважте, що ця конфігурація деякий час була порушена (саме тому, наприклад, systemd попереджає про цю конфігурацію під час завантаження).

Для повної коректності деякі уніці можуть ігнорувати FHS, оскільки я вважаю, що це лише стандарт Linux, я не знаю, що він ще включений до SUS, Posix або будь-якого іншого стандарту UNIX, хоча це має бути IMHO. Однак це є частиною стандарту LSB .


Так це означає, що я можу ділитися / usr / bin між двома дистрибутивами? як ubuntu 10.04 і 10.10?
балки

4
@balki ні, вони все одно повинні бути пов’язані правильно, а це означає, що вони повинні використовувати правильну версію libs, на якій вони побудовані.
ксенотеррацид

6
/binє посиланням /usr/binна деякі сайти, такі як (деякі випуски?) Solaris.
Жиль

1
@balki, можливо, ви зможете поділитися /usrміж двома дуже схожими дистрибутивами, хоча я б не намагався це зробити, якщо ви не знаєте, що ви робите, і ви готові до того, що експеримент не вдасться таким чином, що змушує комп'ютер не завантажуватися або їсти ваші дані. Також слід зазначити, що багато великих різниць між 10.04 та 10.10 відбудуться у/usr
ксенотерацид

2
Включимо також, що / usr / local / bin встановлюються програми, які не входять до вашого розповсюдження, але призначені для загальносистемного використання.
Донато

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

Якесь "оновлення" з цього питання:

В останній час деякі дистрибутиви Linux об'єднуються /binв /usr/binі Relatedly /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 та Arch Linux (і, мабуть, на інших) /binце симпосилання на /usr/bin. Арка також має /sbinі /usr/sbinпосилається на /usr/bin.

Особливо слід відзначити, твердження , що /binдля команд «системний адміністратор» і /usr/binдля призначених для користувача команд є не вірно (якщо ви думаєте , що bashі lsпризначені тільки для адміністраторів, в цьому випадку у вас є багато , щоб вчитися). Команди адміністратора знаходяться в /sbinі /usr/sbin.


1
хто сказав, що binце лише для системних адміністраторів? ось для чого sbin.
ксенотеррацид

Ви неправильно цитували вас. Вибачте, я читав занадто швидко.
bahamat

5

Існує багато систем на основі UNIX. Linux, AIX, Solaris, BSD тощо. Оригінальна цитата дає історичний контекст, який стосується всіх ароматів. Якщо ви подивитеся на якусь конкретну систему, ви побачите різні результати. Останнє речення оригінальної цитати характерне лише для деяких версій та розповсюджень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.