I comandi Linux sono intercambiabili con i comandi Unix?


21

Trovo che alcuni comandi, per esempio, lse pwd, possano essere usati sia su sistemi Linux che Unix.

  • È possibile che tutti i comandi di Linux possano essere usati nei sistemi Unix e tutti i comandi di Unix possano essere usati in Linux?
  • O solo che tutti i comandi di Linux possono essere eseguiti su Unix ma non tutti i comandi di Unix possono essere eseguiti su Linux.
  • O che tutti i comandi Unix possono essere eseguiti su Linux, ma non tutti i comandi Linux possono essere eseguiti su Unix?
  • Oppure c'è un riferimento per mostrarmi quali comandi possono essere eseguiti sia su Linux che su Unix, e dove entrambi hanno il loro comando unico?

28
Leggi "POSIX".
Daniel Andersson,

1
Nota che non è un comando "Linux", è un comando GNU. Gli strumenti GNU possono essere installati su FreeBSD, per esempio.
nuovo123456,

2
Diamine, gli strumenti GNU possono anche essere installati su Unix.
Saluti

Risposte:


37

Il commento di Daniel Andersson su POSIX è la vera risposta qui: esiste uno standard chiamato POSIX che definisce il nucleo di un sistema simile a UNIX, sia in termini di comandi di shell che di chiamate di sistema. In teoria, se si scrive software secondo le specifiche POSIX, dovrebbe essere possibile compilarlo ed eseguirlo su qualsiasi sistema UNIX, Linux, BSD ecc.

http://pubs.opengroup.org/onlinepubs/009695399/mindex.html ti darà una risposta definitiva su ciò che costituisce POSIX, ma questa non è una risposta utile per scopi pratici. Qualcun altro potrebbe avere buoni riferimenti ai comandi per le differenze comuni tra i sistemi Linux e altri sistemi simili a UNIX.

Un esempio specifico: "killall" su Linux uccide tutti i processi con un nome particolare. Su Solaris, arresta il sistema. Importante non usare quello sbagliato.


10
@ tchrist- se lo pensi davvero, digita "sudo apt-get" su Mac OS X e vedi quanto ti porta lontano.
David Robinson,

7
@tchrist quando Ted Wong ha menzionato Linux, stava ovviamente parlando del sistema operativo che è anche conosciuto come GNU / Linux e dice proprio lì nel nome che "GNU's Not Unix!" ;)
João Portela,

4
In realtà, a quanto ho capito, Mac OS X È un Unix certificato - qualcosa che sono state ottenute in pochissime (se presenti) varianti di Linux. Ovviamente questo sarebbe solo una questione di certificazione secondo uno standard molto basilare.
Bill K,

2
@tchrist L inux mi s N ot U ni X
Dave

4
@Dave Bah. Non essere zoppo. Chiama una vanga una vanga, una cata cate ricorda che una rosa con qualsiasi altro nome avrà ancora un odore dolce. Ti saluto in una finestra di Windows e scopri cosa non è Unix . Ma Linux è ovviamente Unix.
tchrist,

18

La maggior parte delle distribuzioni Linux oggi include molti software GNU essenziali e GNU Toolchain. GNU era un progetto per riscrivere una copia free-as-in-freedom di Unix che in seguito fu accoppiata con il kernel Linux. Quando lo usi lssu una macchina Unix stai usando l'originale / quello che è diventato dell'originale ls. Quando usi lsGNU / Linux, stai usando GNU lsche è stato scritto da zero per essere lo stesso di ls. Tuttavia, non tutto il software GNU è esattamente uguale alle sue controparti Unix. Ora che Unix si è essenzialmente trasformato in BSD, le distro GNU / Linux possono contenere anche la versione BSD di quello strumento. Ad esempio, bsdtare ti tarviene in mente.

tl; dr: non sono esattamente lo stesso codice, ma sono pensati per lo più per essere esattamente lo stesso.


2
Per quanto riguarda le differenze, psè l'esempio più fastidioso che mi viene in mente. Switch diversi su sistemi diversi (Linux, AIX e Solaris). Anche diverso formato di output. Sebbene lo scopo di quel comando sia lo stesso su tutti i sistemi.
elmo,

5

Non hai specificato di quale UNIX stai parlando (BSD, System V ...). Non esiste una risposta universale (UNIX). Ogni variante UNIX ha i suoi comandi personalizzati (ad esempio Mac OS X), quindi anche tra UNIX ci sono comandi diversi. Di solito i vecchi comandi (come ls, pwd, cd, cp, mv, rm ...) tendono ad essere gli stessi su tutti i gusti UNIX (incluso Linux).



4

Quello che devi considerare prima è che i comandi sono in realtà piccoli programmi, in questo senso non necessariamente una parte del sistema operativo se dividi i capelli. Quelli vecchi e classici sono in circolazione da molto tempo e sono inclusi nella maggior parte dei sistemi * nix. Quanto sia "completo" il sistema operativo dipende da ciò che viene fornito con il pacchetto.

Ad esempio, la maggior parte dei CD di ripristino / emergenza da cui è possibile avviare contiene una distro Linux sottile, si potrebbe scoprire che alcuni comandi tipici potrebbero non essere presenti in questi sistemi, semplicemente perché non sarebbero necessari nella maggior parte dei casi.


3

Su Solaris devi solo aggiungere /usr/gnu/binal tuo percorso o scambiarlo con i /usr/bintuoi set di comandi saranno molto simili

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.