GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:tutti i comandi Unix sono stati riscritti in Linux?

Vorrei sapere quali comandi sono stati riscritti per Linux e quali sono stati mantenuti da Unix?

Risposta accettata:

Sembra che tu stia confondendo due parti molto diverse del sistema operativo. È comprensibile, perché spesso vengono indicati in modo intercambiabile, 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 vorrai porre, è necessaria una breve lezione di storia.

In primo luogo, c'era UNIX. Fondamentalmente, a quei tempi, UNIX significava il sistema AT&T UNIX, che veniva prima. Ma AT&T UNIX è diventato non-Free, quindi Richard Stallman ha avviato il progetto GNU per scrivere un sistema Unix che fosse Free. 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 da zero la maggior parte delle utilità UNIX. Wikipedia elenca alcuni componenti del sistema complessivo che non sono stati riscritti (TeX, X Window System e il microkernel Mach sono menzionati come esempi di componenti che non sono stati riscritti) ma soprattutto, gli strumenti userland sono stati riscritti da zero per soddisfare l'obiettivo di evitare il riutilizzo di qualsiasi codice AT&T (o meglio, non gratuito), nonché di espandere le loro capacità aggiungendo opzioni a riga di comando. Di conseguenza, le utility GNU erano regolarmente più potenti degli strumenti da cui traevano ispirazione originale.

A quel punto, a GNU mancava ancora un componente vitale:un kernel del sistema operativo , che consentirebbe a tutto di funzionare insieme su un computer reale che non esegue un altro sistema operativo. Nel 1991, Linus Torvalds iniziò a lavorare su un progetto di giocattoli che alla fine divenne noto come Linux. Fondamentalmente era un progetto scolastico per conoscere l'allora nuova CPU Intel 80386 a 32 bit, e 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 shell, nessuna funzione di avvio del sistema oltre all'inizializzazione del kernel, nessun editor di testo, nessuna interfaccia grafica, niente . Il kernel è come il motore di un'auto; essenziale per fare un'auto utile, ma inutile di per sé (per un'auto utile, hai bisogno di cose come ruote, trasmissione, sterzo, un posto in cui il guidatore possa sedersi, un serbatoio di carburante o altra riserva di energia, ecc.). Il kernel Linux è stato infine distribuito sotto la GNU General Public License, la stessa del software GNU .

Quindi le persone hanno iniziato ad accoppiare i due. Otterresti una userland simile a Unix, insieme a un kernel basato sulle idee di Unix (inclusa una stretta somiglianza con POSIX), completo di codice sorgente che potresti hackerare quanto vuoi, e non costa nulla . Soprattutto prima delle distribuzioni Linux divenne comune, ci volle un po' di armeggiare per far funzionare le cose, ma era abbastanza finito da essere in qualche modo utilizzabile da coloro che erano disposti a dedicarci un po' di tempo.

Correlati:Linux – Installa Java su Ubuntu/Linux?

Al giorno d'oggi, GNU fornisce un proprio kernel. Probabilmente non ne hai sentito parlare, ma si chiama GNU Hurd. Ma Hurd non era in circolazione all'inizio degli anni '90, quando Linux iniziò a guadagnare terreno tra hobbisti e riparatori, quindi è stata la combinazione del kernel Linux e di un'utenza prevalentemente GNU ad attirare la massima attenzione tra gli sviluppatori.

Inoltre, al giorno d'oggi, molti sistemi Unix installano, o consentono all'amministratore di installare facilmente, parti del territorio degli utenti GNU. Potresti vedere cose come GNU bash, GNU Compiler Collection, la libreria GNU C (vanilla o con patch) e così via, su un sistema altrimenti non GNU.

A peggiorare le cose, alcuni sistemi usano il kernel Linux ma non la userland GNU. Per un esempio ampiamente utilizzato, prendi in considerazione il sistema operativo Android, che è fondamentalmente il kernel Linux accoppiato con una userland personalizzata.

Questo è importante perché offusca notevolmente il confine 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, chiedi molto spesso del sistema GNU/Linux. Ma considera Debian GNU/kFreeBSD, che esegue una userland GNU sopra il kernel FreeBSD, non usando affatto Linux. O per esempio Solaris, su cui puoi facilmente installare vari pacchetti GNU tra cui ad es. coreutils. Penso che anche Mac OS X venga fornito con parti del mondo degli utenti GNU. Oppure considera il suddetto Android.

Alla fine, un sistema GNU utilizzabile potrebbe eseguire codice non GNU e un sistema non GNU potrebbe eseguire codice GNU, ma le utilità GNU non contengono codice non GNU.


Linux
  1. 5 Comandi per la risoluzione dei problemi di rete Linux

  2. I miei 8 comandi Linux pratici preferiti

  3. Linux:Linux è un Unix?

  4. Come trovare tutti i file di proprietà di un utente specifico in Unix/Linux?

  5. Comando Linux per elencare tutti i comandi e gli alias disponibili

Come eseguire i comandi del file .sh tutto in una volta in Linux

Comandi Linux dalla A alla Z

comando mkdir in Linux/Unix

Linux vs Unix

Comando Grep in Linux/UNIX

Comprimere e decomprimere i comandi in Linux/Unix