Vorrei sapere quali comandi sono stati riscritti per Linux e quali sono stati mantenuti da Unix?
Vorrei sapere quali comandi sono stati riscritti per Linux e quali sono stati mantenuti da Unix?
Risposte:
Sembra che stai confondendo due parti molto diverse del sistema operativo. È comprensibile, perché sono spesso indicati come intercambiabili, ma tecnicamente errato, quindi la tua domanda si basa su una premessa errata. Per esplorare a fondo e, si spera, rispondere alla domanda che probabilmente vorresti porre, è necessaria una breve lezione di storia.
Innanzitutto, c'era UNIX. Fondamentalmente, a quei tempi, UNIX intendeva il sistema UNIX AT&T , che arrivò per primo. Ma AT&T UNIX divenne non libero, quindi Richard Stallman iniziò il progetto GNU per scrivere un sistema Unix che era gratuito . Da qui il nome Gnu non è Unix , abbreviato GNU. I piani per GNU furono resi pubblici nel 1983 e lo sviluppo iniziò nel 1984 .
All'inizio degli anni '90, GNU aveva reimplementato la maggior parte delle utility UNIX da zero. Wikipedia elenca alcuni componenti dell'intero sistema che non sono stati riscritti (TeX, il sistema X Window e il microkernel Mach sono citati come esempi di componenti che non sono stati riscritti) ma soprattutto, gli strumenti per l'utente sono stati riscritti da zero per soddisfare l'obiettivo di evitare il riutilizzo di qualsiasi codice AT&T (o meglio, non libero), nonché di espandere le loro capacità aggiungendo opzioni da riga di comando. Di conseguenza, le utility GNU erano regolarmente più potenti degli strumenti da cui trassero la loro ispirazione originale.
A quel punto, GNU mancava ancora di un componente vitale: un kernel del sistema operativo , che avrebbe permesso a tutto di funzionare insieme su un vero computer senza eseguire altri sistemi operativi. Nel 1991, Linus Torvalds iniziò a lavorare su un progetto giocattolo che alla fine divenne noto come Linux. Fondamentalmente si trattava di un progetto scolastico per conoscere la nuova CPU Intel 80386 a 32 bit , che iniziò in modo estremamente semplice, ma alla fine iniziò a trasformarsi in un kernel del sistema operativo effettivamente utilizzabile. Ma non aveva alcun software userland; Linux da solo non fornisce alcuna shell, nessuna funzionalità di avvio del sistema oltre all'inizializzazione del kernel, nessun editor di testo, nessuna interfaccia grafica, niente. Il kernel è come un motore di automobile; essenziale per rendere un'auto utile, ma inutile da sola (per un'auto utile, hai bisogno di cose come ruote, trasmissione, sterzo, un posto dove il guidatore può sedersi, un serbatoio di carburante o un altro deposito di energia, ecc.). Il kernel Linux fu infine distribuito sotto GNU General Public License, lo stesso del software GNU .
Quindi le persone hanno iniziato ad accoppiare i due. Otterresti una zona utente simile a Unix, insieme a un kernel basato su idee di Unix (inclusa una stretta somiglianza con POSIX ), completo di codice sorgente che potresti hackerare per quanto volevi, e non costava nulla . Soprattutto prima che le distribuzioni Linux diventassero comuni, ci voleva un po 'di armeggiare per far funzionare le cose, ma era abbastanza finito per essere in qualche modo utilizzabile da coloro che erano disposti a passarci un po' di tempo.
In questi giorni, GNU fornisce un proprio kernel. Probabilmente non ne hai sentito parlare, ma si chiama GNU Hurd . Ma Hurd non esisteva nei primi anni '90, quando Linux iniziò a guadagnare terreno tra hobbisti e armeggiatori, quindi fu la combinazione del kernel Linux e una zona utente prevalentemente GNU che attirò più attenzione tra gli sviluppatori.
Inoltre, oggigiorno, molti sistemi Unix installano o consentono all'amministratore di installarlo facilmente, parti della terra dell'utente GNU. Potresti vedere cose come GNU bash, la GNU Compiler Collection, la libreria GNU C (vanilla o patchata) e così via, su un sistema altrimenti non GNU.
A peggiorare le cose, alcuni sistemi usano il kernel Linux ma nessuna area utente GNU. Per un esempio ampiamente usato di ciò, prendi in considerazione il sistema operativo Android , che è fondamentalmente il kernel Linux accoppiato con un'area utente personalizzata.
Questo è importante perché confonde in modo significativo la linea tra GNU, Linux e i vari Unix ( c'è solo un UNIX , ma ci sono molti Unix e ancora più sistemi operativi simili a Unix ). Quando chiedi di Linux, molto spesso chiedi del sistema GNU / Linux. Ma considera Debian GNU / kFreeBSD , che esegue un'area utente GNU sopra il kernel di FreeBSD, non usando affatto Linux. O ad esempio Solaris, su cui è possibile installare facilmente vari pacchetti GNU tra cui ad esempio coreutils . Penso che Mac OS X sia fornito anche con parti della terra dell'utente GNU. Oppure considera il summenzionato Android.
Alla fine, un sistema GNU utilizzabile potrebbe eseguire codice non GNU e un sistema non GNU potrebbe eseguire codice GNU, ma le utility GNU non contengono codice non GNU.