it-swarm.it

Differenza tra / bin e / usr / bin

L'ho letto su questo sito Web e non ha senso.

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

Quando UNIX è stato scritto per la prima volta, /bin e /usr/bin risiedeva fisicamente su due diversi dischi: /bin si trova su un disco più piccolo, più veloce (più costoso) e /usr/bin su un disco più lento e più grande. Adesso, /bin è un collegamento simbolico a /usr/bin: sono essenzialmente la stessa directory.

Ma quando ls il /bin cartella, ha molto meno contenuto rispetto alla /usr/bin cartella (almeno sul mio sistema in esecuzione).

Quindi qualcuno può spiegare la differenza?

92
whoami

Che cosa? no /bin/ non è un collegamento simbolico a /usr/bin su qualsiasi sistema conforme a FHS. Nota che ci sono ancora Unices e Linux popolari che lo ignorano, ad esempio /bin e /sbin sono collegati simbolicamente a /usr/bin su Arch Linux (il ragionamento è che non ti serve /bin per salvataggio/modalità utente singolo, dato che avresti appena avviato un CD live).

/bin

contiene comandi che possono essere utilizzati sia dall'amministratore di sistema che dagli utenti, ma che sono richiesti quando non sono montati altri file system (ad es. in modalità utente singolo). Può anche contenere comandi utilizzati indirettamente dagli script

/usr/bin/

Questa è la directory principale dei comandi eseguibili sul sistema.

essenzialmente, /bin contiene file eseguibili richiesti dal sistema per le riparazioni di emergenza, l'avvio e la modalità utente singolo. /usr/bin contiene tutti i file binari che non sono richiesti.

Noterò che possono essere su dischi/partizioni separati, /bin deve trovarsi sullo stesso disco di /. /usr/bin può trovarsi su un altro disco, sebbene si noti che questa configurazione è stata interrotta per un po '(questo è il motivo per cui ad esempio systemd avvisa di questa configurazione all'avvio).

Per la piena correttezza, alcuni unices potrebbero ignorare FHS, poiché credo che sia solo uno standard Linux, non sono consapevole che è stato ancora incluso in SUS, Posix o qualsiasi altro standard UNIX, anche se dovrebbe essere IMHO. Fa parte dello standard LSB .

79
xenoterracide

Aggiornamento: per un po 'di storia e il vero motivo per cui esiste /usr, leggi questo: http://lists.busybox.net/pipermail/busybox/2010-December/074114.html . Anche questo .


/sbin - File binari necessari per l'avvio, la riparazione del sistema di basso livello o la manutenzione (eseguire il livello 1 o S)

/bin - File binari necessari per il funzionamento del sistema normale/standard a qualsiasi livello di esecuzione.

/usr/bin - File binari di applicazione/distribuzione pensati per essere accessibili dagli utenti che hanno effettuato l'accesso locale

/usr/sbin - File binari di applicazione/distribuzione che supportano o configurano elementi in/sbin.

/usr/share/bin - Binari o script di applicazioni/distribuzione destinati ad essere accessibili via web, ovvero applicazioni web Apache

*local* - I binari non fanno parte di una distribuzione; compilato localmente o installato manualmente. Di solito non c'è mai un /local/bin ma sempre un /usr/local/bin e /usr/local/share/bin.

59
LawrenceC

Una sorta di "aggiornamento" su questo problema:

Recentemente alcune distribuzioni Linux stanno fondendo /bin in /usr/bin e relativi /lib in /usr/lib. A volte anche (/usr)/sbin per /usr/bin (Arch Linux). Così /usr dovrebbe essere disponibile contemporaneamente a /.

La distinzione tra le due gerarchie ora è considerata una complessità non necessaria. L'idea una volta aveva solo /bin disponibile all'avvio, ma avere un ramdisk iniziale lo rende obsoleto.

Conosco Fedora Linux (2011) e Arch Linux (2012) in questo modo e Solaris lo fa da molto tempo (> 15 anni).

18
JonnyJD

Su Linux /bin e /usr/bin sono ancora separati perché è comune avere /usr su una partizione separata (anche se a volte questa configurazione si interrompe in modo sottile). In /bin sono tutti i comandi di cui avrai bisogno se hai solo / montato.

Su Solaris e Arch Linux (e probabilmente altri) /bin è un collegamento simbolico a /usr/bin. Arch ha anche /sbin e /usr/sbin collegato a /usr/bin.

Di particolare nota, l'affermazione che /bin è per i comandi "amministratore di sistema" e /usr/bin è per i comandi utente è non vero (a meno che tu non pensi che bash e ls sono solo per gli amministratori, nel qual caso hai molto da imparare). I comandi di amministratore sono in /sbin e /usr/sbin.

8
bahamat

Esistono molti sistemi basati su UNIX. Linux, AIX, Solaris, BSD, ecc. La citazione originale fornisce un contesto storico che si applica a tutti i gusti. Se guardi un sistema specifico, vedrai risultati diversi. L'ultima frase della citazione originale è specifica solo per alcune versioni e distribuzioni.

5
Chris Quenelle