Różnica między / bin i / usr / bin

83

Przeczytałem to na tej stronie i to nie ma sensu.

http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/basic/node32.html

Kiedy system UNIX został napisany po raz pierwszy /bini /usr/binfizycznie znajdował się na dwóch różnych dyskach: /binna mniejszym, szybszym (droższym) dysku i /usr/binna większym, wolniejszym dysku. Teraz /binjest dowiązaniem symbolicznym do /usr/bin: są one zasadniczo tym samym katalogiem.

Ale kiedy jesteś lsw /binfolderze, ma on znacznie mniej zawartości niż /usr/binfolder (przynajmniej w moim uruchomionym systemie).

Czy ktoś może wyjaśnić różnicę?

kim jestem
źródło
czy oni nie mówią o konkretnej maszynie?
tshepang
1
@tshepang dobrze, jeśli będziesz dalej klikać, w artykule przejdziesz do Podstawowego wprowadzenia do UNIX / linux . Więc powiedziałbym, że nie, nie mówią o konkretnej maszynie
ksenoterrakidzie
3
@xeno Tak, zrobiłem, ale nie trzymałem się wystarczająco długo. W takim przypadku należy usunąć tę stronę. Taki mylący.
tshepang
3
Dokument ten można uznać za „odniesienie historyczne”. Jeśli spojrzysz na stronę „o tym dokumencie”, zobaczysz, że pierwotnie był chroniony prawem autorskim w 1993 roku. Jeśli spojrzysz na bibliografię, to najnowsze źródło pochodzi z 1997 r. Większość popularnych systemów operacyjnych uniksowych zmieniła się znacznie od tego czasu następnie.
Gabe.
1
Każdy zainteresowany historycznością tej konfiguracji powinien przeczytać to: lists.busybox.net/pipermail/busybox/2010-December/074114.html
JDS

Odpowiedzi:

73

Co? no /bin/nie jest dowiązaniem symbolicznym do /usr/binżadnego systemu zgodnego z FHS. Zwróć uwagę, że nadal istnieją popularne Uniksy i Linuxy, które to ignorują - na przykład /bini /sbinsą dowiązane symbolicznie do /usr/binArch Linux (powodem jest to, że nie potrzebujesz /bintrybu ratunkowego / trybu pojedynczego użytkownika, ponieważ po prostu uruchamiasz na żywo PŁYTA CD).

/bin

zawiera polecenia, które mogą być używane zarówno przez administratora systemu, jak i przez użytkowników, ale są wymagane, gdy nie podłączono żadnych innych systemów plików (np. w trybie pojedynczego użytkownika). Może także zawierać polecenia używane pośrednio przez skrypty

/usr/bin/

Jest to główny katalog komend wykonywalnych w systemie.

zasadniczo /binzawiera pliki wykonywalne, które są wymagane przez system do napraw awaryjnych, uruchamiania i trybu pojedynczego użytkownika. /usr/binzawiera niepotrzebne pliki binarne.

Zwrócę uwagę, że mogą znajdować się na osobnych dyskach / partycjach, /binmuszą znajdować się na tym samym dysku co /. /usr/binmoże znajdować się na innym dysku - chociaż należy pamiętać, że ta konfiguracja została przez jakiś czas zepsuta (dlatego np. systemd ostrzega przed tą konfiguracją podczas rozruchu).

Dla pełnej poprawności, niektóre jednorożce mogą ignorować FHS, ponieważ uważam, że jest to tylko standard Linux, nie wiem, czy został on jeszcze włączony do SUS, Posix lub jakiegokolwiek innego standardu UNIX, chociaż powinien to być IMHO. Jest to jednak część standardu LSB .

ksenoterracid
źródło
Czy to oznacza, że ​​mogę współdzielić / usr / bin między dwiema dystrybucjami? jak Ubuntu 10.04 i 10.10?
balki 15.01.11
4
@balki nie, nadal muszą być poprawnie połączone, co oznacza, że ​​będą musieli używać odpowiedniej wersji bibliotek, dla których są zbudowane.
Xenoterracide
6
/binto link do /usr/binniektórych jednorożców, takich jak (niektóre wydania?) Solaris.
Gilles,
1
@balki ty może być w stanie dzielić się /usrpomiędzy dwoma bardzo podobne distro, choć nie będę próbować, chyba że wiesz co robisz i jesteś przygotowany na eksperyment się nie powiedzie w sposób, który sprawia, że komputer nie uruchamia się, lub jeść Twoje dane. Również należy pamiętać, że wiele dużych różnic między 10.04 a 10.10 będzie/usr
xenoterracide
2
Weźmy również pod uwagę, że / usr / local / bin to miejsce, w którym instalowane są programy, które nie są zawarte w twojej dystrybucji, ale są przeznaczone do użytku ogólnosystemowego.
Donato
56

/sbin - Pliki binarne potrzebne do rozruchu, naprawy systemu niskiego poziomu lub konserwacji (uruchom poziom 1 lub S)

/bin - Pliki binarne potrzebne do normalnego / standardowego funkcjonowania systemu na dowolnym poziomie przebiegu.

/usr/bin - Pliki binarne aplikacji / dystrybucji przeznaczone dla użytkowników zalogowanych lokalnie

/usr/sbin - Pliki binarne aplikacji / dystrybucji, które obsługują lub konfigurują rzeczy w / sbin.

/usr/share/bin - Pliki binarne aplikacji / dystrybucji lub skrypty przeznaczone do uzyskiwania dostępu przez Internet, tj. Aplikacje internetowe Apache

*local*- Pliki binarne nie są częścią dystrybucji; skompilowany lokalnie lub zainstalowany ręcznie. Zwykle nigdy nie ma, /local/binale zawsze jest /usr/local/bini /usr/local/share/bin.

LawrenceC
źródło
4
Aha, i możesz je wszystkie umieścić na osobnym dysku lub partycji, jeśli chcesz, dla bezpieczeństwa lub cokolwiek innego. Chodzi o to, że możesz umount / usr, a system będzie miał wszystko, czego potrzeba do podstawowego funkcjonowania, ale nie może uruchamiać żadnych aplikacji niesystemowych.
LawrenceC,
1
Chciałbym wiedzieć tego lata temu. Najlepsze wyjaśnienie, jakie do tej pory widziałem. Nie mogę powiedzieć, że wyglądałem bardzo ciężko, ale cieszę się, że w końcu znam odpowiedź.
David
2
to świetna odpowiedź. oddałbym ci 10 własnych punktów, gdybym mógł
amfibia
@ultrasawblade jest /usr/binautomatycznie odmontowywany, gdy nie ma zalogowanych użytkowników? Na przykład, gdy LINUX uruchamia się i przedstawia uwierzytelnienie logowania, jest /usr/binzamontowany czy nie?
1
Nie, jest montowany przy rozruchu i pozostaje zamontowany, chyba że go odmontujesz, chyba że system jest skonfigurowany w nietypowy sposób.
LawrenceC
17

Jakaś „aktualizacja” tego problemu:

Ostatnio niektóre dystrybucje łączą /binsię /usr/bini relatedly /libsię /usr/lib. Czasami także (/usr)/sbindo /usr/bin(Arch Linux). Tak /usrma być dostępne w tym samym czasie co /.

Rozróżnienie między dwiema hierarchiami uważa się za niepotrzebną złożoność. Pomysł był kiedyś /bindostępny tylko podczas rozruchu, ale posiadanie początkowego ramdysku sprawia, że ​​jest to przestarzałe.

Wiem, że Fedora Linux (2011) i Arch Linux (2012) idą w tę stronę, a Solaris robi to od dłuższego czasu (> 15 lat).

JonnyJD
źródło
8

W systemie Linux /bini /usr/binnadal są osobne, ponieważ często ma się je /usrna osobnej partycji (chociaż ta konfiguracja czasami psuje się w subtelny sposób). W /binto wszystkie polecenia, których będziesz potrzebować, jeśli tylko je /zamontowałeś.

W systemach Solaris i Arch Linux (i prawdopodobnie innych) /binjest dowiązaniem symbolicznym /usr/bin. Arch również ma /sbini /usr/sbinsymlinkuje do /usr/bin.

Na szczególną uwagę, ze stwierdzeniem, że /binjest za „Administrator systemu” poleceń i /usr/binjest na polecenia użytkownika to nie prawda (chyba, że bashi lssą wyłącznie dla administratorów, w takim przypadku trzeba się wiele nauczyć). Polecenia administratora znajdują się w /sbini /usr/sbin.

bahamat
źródło
1
kto powiedział, że binjest tylko dla administratorów systemu? po to sbinjest.
ksenoterracid
Źle cię cytował. Przepraszam, czytałem zbyt szybko.
bahamat
5

Istnieje wiele systemów opartych na UNIX. Linux, AIX, Solaris, BSD itp. Oryginalny cytat podaje kontekst historyczny, który dotyczy wszystkich smaków. Jeśli spojrzysz na jeden konkretny system, zobaczysz różne wyniki. Ostatnie zdanie oryginalnego cytatu dotyczy tylko niektórych wersji i dystrybucji.

Chris Quenelle
źródło