Разница между / 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

Так может кто-нибудь объяснить, пожалуйста, разницу?

кто я
источник
разве эти парни не говорят о конкретной машине?
чепанг
1
@tshepang хорошо, если вы продолжите нажимать вверх, в этой статье вы найдете Основное введение в UNIX / linux . Так что я бы сказал нет, они не говорят о конкретной машине
xenoterracide
3
@xeno Да, конечно, но долго не задерживался. В этом случае эта страница должна быть удалена. Так что вводит в заблуждение.
tshepang
3
Этот документ можно считать «историческим справочником». Если вы посмотрите на страницу «об этом документе», то увидите, что она была защищена авторским правом первоначально в 1993 году. Если вы посмотрите на библиографию, то ее самый последний источник - 1997 год. Большинство популярных Unix-подобных операционных систем существенно изменились с тех пор, как тогда.
таращиться
1
Любой, кто интересуется историчностью этой конфигурации, должен прочитать это: lists.busybox.net/pipermail/busybox/2010-De December/074114.html
JDS

Ответы:

73

Какая? no /bin/не является символической ссылкой /usr/binна какую-либо FHS-совместимую систему. Обратите внимание, что все еще есть популярные Unix и Linux, которые игнорируют это - например, /binи /sbinимеют символическую ссылку /usr/binна Arch Linux ( причина в том, что вам не нужен /binрежим аварийного восстановления / однопользовательский режим, поскольку вы просто загружаете live КОМПАКТ ДИСК).

/bin

содержит команды, которые могут использоваться как системным администратором, так и пользователями, но требуются, когда не смонтированы другие файловые системы (например, в однопользовательском режиме). Он также может содержать команды, которые косвенно используются скриптами

/usr/bin/

Это основной каталог исполняемых команд в системе.

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

Отмечу, что они могут быть на отдельных дисках / разделах, /binдолжны быть на том же диске, что и /. /usr/binможет быть на другом диске - хотя обратите внимание, что эта конфигурация некоторое время была повреждена (вот почему, например, systemd предупреждает об этой конфигурации при загрузке).

Для полной корректности, некоторые подразделения могут игнорировать FHS, поскольку я считаю, что это только стандарт Linux, я не знаю, что он еще включен в SUS, Posix или любой другой стандарт UNIX, хотя это должно быть ИМХО. Это часть стандарта LSB, хотя.

xenoterracide
источник
Значит ли это, что я могу поделиться / usr / bin между двумя дистрибутивами? как убунту 10.04 и 10.10?
балки
4
@balki нет, они все равно должны быть правильно связаны, что означает, что они должны использовать правильную версию библиотек, против которых они построены.
ксенотеррацид
6
/binссылка /usr/binна некоторые устройства, такие как (некоторые выпуски?) Solaris.
Жиль
1
@balki вы могли бы разделить /usrдва очень похожих дистрибутива, хотя я бы не стал пробовать это, если бы вы не знали, что делаете, и вы готовы к тому, что эксперимент провалится так, что компьютер не загружается или не ест ваши данные. Кроме того , обратите внимание , что многие из больших различий между 10.04 и 10.10 будет/usr
xenoterracide
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.

LawrenceC
источник
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доступна только при загрузке, но наличие начального виртуального диска делает это устаревшим.

Я знаю, что Fedora Linux (2011) и Arch Linux (2012) идут по этому пути, и Solaris делает это долгое время (> 15 лет).

JonnyJD
источник
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.

bahamat
источник
1
кто сказал binэто только для системных администраторов? вот для чего sbin.
ксенотеррацид
Неверно процитировал вас Извините, я слишком быстро читал.
багамат
5

Существует много систем на основе UNIX. Linux, AIX, Solaris, BSD и т. Д. Оригинальная цитата дает исторический контекст, который применяется ко всем разновидностям. Если вы посмотрите на какую-то одну конкретную систему, вы увидите разные результаты. Последнее предложение оригинальной цитаты относится только к некоторым версиям и дистрибутивам.

Крис Квинель
источник