Sind Linux-Befehle mit Unix-Befehlen austauschbar?

21

Ich finde, dass einige Befehle, zum Beispiel lsund pwd, sowohl auf Linux- als auch auf Unix-Systemen verwendet werden können.

  • Können alle Linux-Befehle in den Unix-Systemen und alle Unix-Befehle in Linux verwendet werden?
  • Oder einfach, dass alle Linux-Befehle unter Unix ausgeführt werden können, aber nicht alle Unix-Befehle unter Linux ausgeführt werden können.
  • Oder dass alle Unix-Befehle unter Linux ausgeführt werden können, aber nicht alle Linux-Befehle unter Unix ausgeführt werden können?
  • Oder gibt es eine Referenz, die zeigt, welche Befehle unter Linux und Unix ausgeführt werden können und wo beide ihre eigenen eindeutigen Befehle haben?
Ted Wong
quelle
28
Lesen Sie über "POSIX".
Daniel Andersson
1
Beachten Sie, dass es sich nicht um einen "Linux" -Befehl handelt, sondern um einen GNU-Befehl. Die GNU-Tools können zum Beispiel auf FreeBSD installiert werden.
new123456
2
Heck, die GNU-Tools können sogar unter Unix installiert werden.
MSalters

Antworten:

37

Daniel Anderssons Kommentar zu POSIX ist hier die richtige Antwort: Es gibt einen Standard namens POSIX, der den Kern eines UNIX-ähnlichen Systems sowohl in Form von Shell-Befehlen als auch in Form von Systemaufrufen definiert. Wenn Sie Software in die POSIX-Spezifikation schreiben, sollte es theoretisch möglich sein, sie auf jedem UNIX-, Linux-, BSD- usw. System zu kompilieren und auszuführen.

http://pubs.opengroup.org/onlinepubs/009695399/mindex.html gibt Ihnen eine endgültige Antwort darauf, was POSIX ausmacht, aber dies ist für praktische Zwecke keine nützliche Antwort. Jemand anderes verfügt möglicherweise über gute Befehlsreferenzen für allgemeine Unterschiede zwischen Linux-Systemen und anderen UNIX-ähnlichen Systemen.

Ein konkretes Beispiel: "killall" unter Linux beendet alle Prozesse mit einem bestimmten Namen. Unter Solaris wird das System heruntergefahren. Wichtig, dass Sie nicht den falschen verwenden.

pjc50
quelle
10
@ tchrist- Wenn Sie das wirklich glauben, geben Sie "sudo apt-get" unter Mac OS X ein und sehen Sie, wie weit es Sie bringt.
David Robinson
7
@tchrist Als Ted Wong Linux erwähnte, sprach er offensichtlich über das Betriebssystem, das auch als GNU / Linux bekannt ist, und genau dort steht im Namen "GNU's Not Unix!" ;)
João Portela
4
Eigentlich ist Mac OS X nach meinem Verständnis ein zertifiziertes Unix - etwas sehr Weniges (wenn überhaupt) der erreichten Linux-Varianten. Offensichtlich wäre dies nur eine Frage der Zertifizierung nach einem sehr grundlegenden Standard.
Bill K,
2
@tchrist L inux I s N ot U ni X
Dave
4
@ Dave Bah. Sei nicht lahm. Rufen Sie einen Spaten einen Spaten, eine catein cat, und denken Sie daran , dass eine Rose von einem anderen Namen noch so süß riechen soll. Hie dich auf eine Windows-Box und lerne, was Unix nicht ist . Aber Linux ist natürlich Unix.
Tchrist
18

Die meisten Linux-Distributionen werden heute mit vielen wichtigen GNU-Programmen und der GNU-Toolchain ausgeliefert. GNU war ein Projekt zum Umschreiben einer frei verfügbaren Unix-Kopie, die später mit dem Linux-Kernel gepaart wurde. Wenn Sie lsauf einem Unix-Computer arbeiten, verwenden Sie das Original bzw. was aus dem Original geworden ist ls. Wenn Sie lsGNU / Linux verwenden, verwenden Sie die GNU, lsdie von Grund auf neu geschrieben wurde ls. Allerdings ist nicht jede GNU-Software genau die gleiche wie ihre Unix-Gegenstücke. Jetzt, da Unix im Wesentlichen zu BSD geworden ist, können GNU / Linux-Distributionen auch die BSD-Version dieses Tools enthalten. Zum Beispiel bsdtarund tarin den Sinn kommen.

tl; dr: Sie sind nicht genau derselbe Code, aber sie sollen größtenteils genau derselbe sein.

Jimmy Zelinskie
quelle
2
Was die Unterschiede psangeht, ist dies das nervigste Beispiel, das ich mir vorstellen kann. Verschiedene Switches auf verschiedenen Systemen (Linux, AIX und Solaris). Auch anderes Ausgabeformat. Der Zweck dieses Befehls ist jedoch auf allen Systemen derselbe.
Elmo
5

Sie haben nicht angegeben, um welches UNIX es sich handelt (BSD, System V ...). Es gibt keine universelle Antwort (UNIX). Jede UNIX-Variante verfügt über eigene benutzerdefinierte Befehle (z. B. Mac OS X), sodass es auch zwischen UNIX-Versionen unterschiedliche Befehle gibt. In der Regel sind alte Befehle (wie ls, pwd, cd, cp, mv, rm ...) auf allen UNIX-Versionen (einschließlich Linux) gleich.

m0skit0
quelle
4

Was Sie zuerst berücksichtigen müssen, ist, dass die Befehle eigentlich kleine Programme sind, in diesem Sinne nicht unbedingt ein Teil des Betriebssystems, wenn Sie Haare teilen. Die alten und klassischen gibt es schon lange und sind in den meisten * nix-Systemen enthalten. Wie "vollständig" das Betriebssystem ist, hängt davon ab, was mit dem Paket geliefert wird.

Beispiel: Die meisten Wiederherstellungs- / Notfall-CDs, von denen Sie booten können, enthalten eine schlanke Linux-Distribution. Einige typische Befehle sind in diesen Systemen möglicherweise nicht enthalten, da sie in den meisten Fällen nicht benötigt werden.

posdef
quelle
3

Auf Solaris müssen Sie nur /usr/gnu/binIhren Pfad ergänzen oder austauschen, /usr/binund Ihre Befehlssätze werden sehr ähnlich sein

Linda Kateley
quelle