/ usr /, presumo sia l'utente del computer.
Vicino.
Unix è iniziato come un sistema operativo multiutente, quindi non è "l'utente", è "gli utenti ", plurale.
Prima dell'uscita di AT&T Unix System V versione 4 (SVR4) nel 1988 con i suoi strumenti di gestione utenti predefiniti nella creazione di home directory degli utenti /home
, la posizione convenzionale era /usr
.¹ La tua $HOME
directory potrebbe essere stata /usr/jfw
su un box System III .
/usr
conteneva anche, allora come oggi, /usr/bin
, /usr/lib
, etc. L'esperienza ha mostrato che segregare le home directory è stata buona pratica di gestione del sistema, quindi con il /home
cambiamento di politica in SVR4, è lasciato alle spalle tutto ciò che oggi consideriamo come appartenenti a /usr
.
/usr
aveva ancora una buona ragione per mantenere il nome: ciò che restava indietro erano i file che non dovevano essere disponibili fino a quando il sistema non fosse stato avviato abbastanza da supportare il normale uso interattivo. Vale a dire, ciò che è stato lasciato alle spalle erano le parti del sistema operativo focalizzate dall'utente . Ciò significa che /usr
potrebbe essere su un volume fisico diverso, il che era una cosa positiva ai tempi di 92 MB di unità disco rigido delle dimensioni delle lavatrici .
I primi sistemi Unix sono stati attenti a tenere fuori i file del sistema operativo principale in /usr
modo da poter ancora avviare in modalità utente singolo² anche se il /usr
volume era smontabile per qualche motivo. Il volume di root conteneva strumenti sufficienti per riportare il /usr
volume online.
Diverse versioni di Unix ora ignorare questo vecchio principio di progettazione dal momento che anche i piccoli sistemi embedded hanno abbastanza spazio per entrambi i file di volume radice tradizionali e tutti /usr
su un unico volume.³ Red Hat Enterprise Linux, Solaris e Cygwin link simbolico /bin
per /usr/bin
e /lib
per /usr/lib
modo che non v'è alcuna più alcuna differenza tra queste directory.
... / local / ... ovviamente significa computer locale ...
Sì. Si riferisce al fatto che i file sottostanti /usr/local
dovrebbero essere particolari per quel singolo sistema. I file che sono in qualche modo generici dovrebbero vivere altrove.
Ciò ha anche radici nel modo in cui i sistemi Unix venivano comunemente usati decenni fa, quando tutto ciò era standardizzato. Ancora una volta, i dischi rigidi del tempo erano ingombranti, molto costosi e conservati poco secondo gli standard odierni. Per risparmiare denaro e spazio sui dischi, un laboratorio informatico pieno di box Unix spesso condivideva la maggior parte di /usr
NFS o altri protocolli di condivisione file di rete, quindi ogni box non doveva avere una propria copia ridondante. File specifici per un singolo la casella andrebbe sotto /usr/local
, che sarebbe un volume separato da /usr
.
Questa eredità storica è il motivo per cui è ancora l'impostazione predefinita per la maggior parte del software Unix di terze parti da installare /usr/local
quando installata a mano. La maggior parte di tali software ti consentirà di installare il pacchetto altrove, ma facendo una scelta non desiderata, otterrai il valore predefinito sicuro, che non interferisce con altri percorsi di installazione comuni con scopi più specifici.
Ci sono buoni motivi per fare installare il software altrove. Il team macOS di Apple lo fa quando costruisce, diciamo, bash
dal codice sorgente GNU Bash . Usano /
come prefisso di installazione, sovrascrivendo il /usr/local
valore predefinito, in modo che Bash finisca /bin
.
Un altro esempio è il modo in cui i sistemi Linux più vecchi segregavano il loro software GUI /usr/X11R6
, per tenerlo separato dalla riga di comando tradizionale e dal curses
software basato. Ciò è stato fatto semplicemente sovrascrivendo il /usr/local
prefisso predefinito con /usr/X11R6
.⁵
E cos'è / bin?
È l'abbreviazione di "binario", che in questo contesto significa "un file che non è un testo semplice". La maggior parte di questi file sono eseguibili su una scatola Unix, quindi questi due termini sono diventati sinonimi in alcuni ambienti. ("Per favore, costruiscimi un binario per RHEL 7, Fred.")
I file di testo su una scatola di Unix vivono altrove: /etc
, /usr/include
, /usr/share
, etc.
Una volta, anche gli script di shell - che sono semplici file di testo - erano tenuti fuori dalle bin
directory, ma anche questa linea è sfocata. Oggi le bin
directory in genere contengono qualsiasi tipo di file eseguibile, rigorosamente "binario" o no. ⁶
Note a piè di pagina e digressioni :
La natura primitiva degli strumenti di gestione degli utenti prima di SVR4 significava che lo HOME=/usr/$NAME
schema era semplicemente documentato come una convenzione, piuttosto che applicato dagli strumenti software come predefinito.
Puoi vederlo a pagina 4-8 della " Guida dell'amministratore di sistema di AT&T Unix versione V versione 3.2 : qui vedi AT&T che raccomanda il vecchio /usr/$NAME
schema nell'ultima versione principale di Unix prima che SVR4 uscisse.
Era abbastanza comune nei vecchi sistemi Unix per gli amministratori di sistema scegliere uno schema diverso che avesse più senso per loro. Essere persone, questo significava inventare molti schemi diversi.
Uno schema che ho incontrato prima è /home/$NAME
diventato lo standard /u/$NAME
.
Un altro sistema che ho usato nei primi anni 1990 ha avuto così tanti utenti che non potevano andare bene tutte le home directory in un singolo volume fisico, in modo da utilizzare uno schema simile /u1/$NAME
, /u2/$NAME
e così via, come ricordo. Il disco su cui è finita la tua home directory era semplicemente una questione di cui uno aveva spazio al momento della creazione del tuo account.
Puoi avviare una macOS box in modalità utente singolo tenendo premuto Cmd-Smentre si avvia. Lascia andare una volta che lo schermo diventa nero e viene visualizzato il testo grigio chiaro. È come correre sotto il Terminale, ma occupa l'intero schermo perché la GUI non è ancora iniziata.
Stai attento, stai correndo come root
.
Digitare "esci" al prompt di root per utente singolo per uscire dalla modalità utente singolo e continuare l'avvio in modalità GUI multiutente.
I sistemi operativi Unixy che sembrano ancora tenere fuori i file in modalità utente singolo critici /usr
non possono, in effetti, farlo al giorno d'oggi. Una volta ho reso non avviabile un box di FreeBSD 9 spostandomi /usr
su un volume ZFS. Ho dimenticato che le funzionalità di ZFS-on-root non sono arrivate fino a FreeBSD 10, creando un Catch 22 : il sistema operativo aveva bisogno di file /usr
per poterlo montare /usr
!
Questo era abbastanza grave, ma se FreeBSD 9 avesse ancora tenuto fuori la sua roba di avvio per utente singolo /usr
, avrei potuto risolverlo in posizione. Dal momento che non /usr
si avviava nemmeno in modalità utente singolo con l' essere smontabile, chiaramente quella tradizione era stata in qualche modo violata. Ho dovuto fare il boot da un CD di ripristino per riavviare il sistema.
È anche qui che otteniamo /usr/share
: segrega i file che potrebbero essere condivisi anche tra scatole Unix con diversi tipi di processori. Tipicamente, file di testo: pagine man, dizionario, ecc.
"X11R6" si riferiva alla versione di X Window System alla base delle GUI di Linux al momento in cui questa convenzione era prevalente. I sistemi Linux in genere hanno smesso di segregare il software della GUI nel momento in cui X11R6 è stato sostituito con X.Org .
I sistemi Unix originali hanno mantenuto i loro script core shell /etc
al fine di evitare di mescolarli con i veri binari in /bin
.