22Jul

Was ist der Unterschied zwischen Bash, Zsh und anderen Linux Shells?

Die meisten Linux-Distributionen enthalten standardmäßig die Bash-Shell, aber Sie können auch zu einer anderen Shell-Umgebung wechseln. Zsh ist eine besonders beliebte Alternative, und es gibt andere Muscheln, wie Asche, Strich, Fisch und Tcsh. Aber was ist der Unterschied und warum gibt es so viele?

Was tun Shells?

Wenn Sie sich an der Befehlszeile anmelden oder ein Terminalfenster unter Linux starten, startet das System das Shell-Programm. Shells bieten eine Standardmethode zur Erweiterung der Befehlszeilenumgebung. Sie können die Standard-Shell für eine andere austauschen, wenn Sie möchten.

Die erste Shell-Umgebung war die Thompson Shell, die 1971 bei Bell Labs entwickelt wurde. Shell-Umgebungen haben sich seither auf das Konzept gestützt und eine Vielzahl neuer Funktionen, Funktionen und Geschwindigkeitsverbesserungen hinzugefügt.

Zum Beispiel bietet Bash Befehls- und Dateinamenergänzung, erweiterte Skriptfunktionen, eine Befehlshistorie, konfigurierbare Farben, Befehlsaliasnamen und eine Vielzahl anderer Funktionen, die 1971 nicht verfügbar waren, als die erste Shell veröffentlicht wurde.

Die Shell wird auch von verschiedenen Systemdiensten im Hintergrund verwendet. Linux-Distributionen enthalten viele Funktionen, die als Shell-Skripte geschrieben sind. Diese Skripts sind Befehle und andere erweiterte Shell-Skriptfunktionen, die durch die Shell-Umgebung laufen.

Shells, die zu Bash führen: sh, csh, tsh und ksh

Der prominenteste Vorläufer moderner Shells ist die Bourne-Shell - auch bekannt als "sh" -, die nach ihrem Schöpfer Stephen Bourne benannt wurde, der bei AT & T's Bell arbeiteteLabore. Im Jahr 1979 veröffentlicht, wurde es der Standard-Befehlsinterpreter in Unix wegen seiner Unterstützung für Befehlssubstitution, Rohrleitungen, Variablen, Zustandsprüfung und Schleifen, zusammen mit anderen Funktionen. Es bot nicht viel Anpassung für Benutzer und unterstützte keine modernen Feinheiten wie Aliase, Befehlsvervollständigung und Shell-Funktionen( obwohl diese letzte irgendwann hinzugefügt wurde).

Die C-Schale, oder "csh", wurde in den späten 1970er Jahren von Bill Joy an der University of California in Berkley entwickelt. Es wurden viele interaktive Elemente hinzugefügt, mit denen Benutzer ihre Systeme steuern konnten, wie Aliase( Verknüpfungen für lange Befehle), Job-Management-Fähigkeiten, Befehlsverlauf und mehr. Es wurde von der C-Programmiersprache modelliert, in der das Unix-Betriebssystem selbst geschrieben war. Dies bedeutete auch, dass Benutzer der Bourne-Shell C lernen mussten, um Befehle darin eingeben zu können. Darüber hinaus hatte csh einige Bugs, die von Nutzern und YouTubern über einen langen Zeitraum hinweg herausgefordert werden mussten. Die Leute benutzten die Bourne-Shell für Skripte, weil sie nicht-interaktive Befehle besser handhabten, aber für normale Verwendung bei der C-Shell blieben.

Im Laufe der Zeit haben viele Leute Fehler in der C-Shell behoben und Funktionen hinzugefügt, die in einer verbesserten Version von csh, bekannt als "tcsh", gipfelten. Aber csh war immer noch der Standard in Unix-basierten Computern und hatte einige nicht standardmäßige Funktionen hinzugefügt. David Korn von Bell Labs arbeitete an der KornShell oder "ksh", die versuchte, die Situation zu verbessern, indem sie rückwärtskompatibel mit der Sprache der Bourne-Shell war, aber viele Features aus der csh-Shell hinzufügte. Es wurde 1983 veröffentlicht, aber unter einer proprietären Lizenz. Es war keine freie Software bis zu den 2000er Jahren, als es unter verschiedenen Open-Source-Lizenzen veröffentlicht wurde.

Die Geburt von bash

Die portable Betriebssystemschnittstelle für Unix oder POSIX war eine weitere Antwort auf die hektischen proprietären csh-Implementierungen. Es hat unter anderem erfolgreich einen Standard für die Befehlsinterpretation erstellt und schließlich viele Features in der KornShell gespiegelt. Zur gleichen Zeit versuchte das GNU-Projekt ein freies, Unix-kompatibles Betriebssystem zu erstellen. Das GNU-Projekt entwickelte eine freie Software-Shell, die Teil seines kostenlosen Betriebssystems sein sollte, und nannte es "Bourne Again Shell" oder "Bash".

Bash wurde in den Jahrzehnten seit seiner ersten Veröffentlichung im Jahr 1989 verbessert, aber es ist immer noch die Standard-Shell auf den meisten Linux-Distributionen heute. Es ist auch die Standard-Shell auf Apple macOS, und ist für die Installation auf Microsoft Windows 10 verfügbar.

Neuere Shells: Asche, Dash, Zsh und Fisch

Während die Linux-Community Bash in den Jahren seitdem beschlossen hat, haben die Entwickler nicht aufgehörtErstellen neuer Shells, als Bash vor 28 Jahren zum ersten Mal veröffentlicht wurde.

Kenneth Almquist hat einen Bourne-Shell-Klon namens Almquish Shell, A Shell, "Ash" oder manchmal nur "sh" erstellt. Es war auch POSIX-kompatibel und wurde zur Standard-Shell in BSD, einem anderen Zweig von Unix. Die Ash-Shell ist leichter als Bash, was sie in Embedded-Linux-Systemen beliebt macht. Wenn Sie ein gerootetes Android-Telefon mit BusyBox installiert haben - oder ein anderes Gerät mit der BusyBox-Software-Suite -, verwendet es Code von Ash.

Debian entwickelte eine auf Asche basierende Shell-Umgebung und nannte sie "Strich".Es ist so konzipiert, dass es POSIX-konform und leichtgewichtig ist. Es ist also schneller als Bash, verfügt jedoch nicht über alle Funktionen. Ubuntu verwendet die Dash-Shell als Standard-Shell für nicht-interaktive Aufgaben, beschleunigt Shell-Skripte und andere Aufgaben, die im Hintergrund ausgeführt werden. Ubuntu verwendet bash immer noch für interaktive Shells, so dass Benutzer immer noch die interaktive Umgebung mit allen Funktionen haben.

Eine der beliebtesten neueren Shells ist die Z-Shell oder "zsh".Von Paul Falstad im Jahr 1990 entwickelt, ist zsh eine Bourne-Stil-Shell, die die Funktionen enthält, die Sie in bash finden, und noch mehr. Zum Beispiel hat zsh Rechtschreibprüfung, die Fähigkeit, nach Logins / Logouts zu schauen, einige eingebaute Programmierfunktionen wie Bytecode, Unterstützung für wissenschaftliche Notation in Syntax, ermöglicht Gleitkomma-Arithmetik und mehr Funktionen.

Eine weitere neuere Shell ist die Friendly Interactive Shell oder "Fish", die 2005 veröffentlicht wurde. Sie hat eine einzigartige Befehlszeilensyntax, die etwas einfacher zu erlernen ist, aber weder von der Bourne-Shell noch von der C-Shell abgeleitet ist. Es ist eine interessante Idee, aber was Sie durch die Verwendung von Fisch lernen, wird Ihnen nicht unbedingt helfen, bash und andere Bourne-abgeleitete Schalen zu verwenden.

Welche sollten Sie wählen?(und warum Zsh populär ist)

Sie müssen keine Shell auswählen. Ihr Betriebssystem wählt Ihre Standard-Shell für Sie, und diese Wahl ist fast immer bash. Setzen Sie sich vor eine Linux-Distribution - oder sogar einen Mac - und Sie werden fast immer eine Bash-Shell-Umgebung haben. Bash hat einige fortgeschrittene Funktionen, aber Sie werden sie wahrscheinlich nur verwenden, wenn Sie Shell-Skripte programmieren.

Auf Embedded-Linux-Systemen oder BSD-Systemen erhalten Sie die Ascheschale. Aber Asche ist eine Bourne-basierte Shell und ist weitgehend kompatibel mit bash. Jegliches Wissen, das Sie von der Verwendung von bash haben, wird auf die Verwendung einer Ash- oder Dash-Shell übertragen, obwohl einige erweiterte Skriptfunktionen in dieser leichtgewichtigen Shell nicht verfügbar sind.

Fast jede Shell, auf die Sie stoßen werden, basiert auf Bourne und funktioniert ähnlich - einschließlich zsh.

Deshalb ist zsh populär. Diese neuere Shell ist kompatibel mit bash, enthält aber mehr Funktionen. Die zsh-Shell bietet eine integrierte Rechtschreibkorrektur, eine verbesserte Befehlszeilenkomplettierung, ladbare Module, die als Plug-Ins für Ihre Shell fungieren, globale Aliasnamen, mit denen Sie Alias-Dateinamen oder andere Befehle in der Befehlszeile anstelle von Befehlen übernehmen könnenmehr thematische Unterstützung. Es ist wie Bash, aber mit vielen Extras, zusätzlichen Funktionen und konfigurierbaren Optionen, die Sie vielleicht schätzen werden, wenn Sie viel Zeit an der Befehlszeile verbringen.

Wenn Sie mit bash vertraut sind, können Sie zu zsh wechseln, ohne eine andere Syntax zu erlernen - Sie erhalten nur zusätzliche Funktionen. Wenn Sie mit zsh vertraut sind, können Sie zu bash wechseln, ohne eine andere Syntax zu erlernen. Sie haben einfach keinen Zugriff auf diese Funktionen.

"Oh My ZSH" ist ein Tool, mit dem Sie zsh-Plug-Ins einfacher aktivieren und zwischen vorgefertigten Designs wechseln können. So können Sie Ihre zsh-Shell schnell anpassen, ohne stundenlang daran zu arbeiten.

Es gibt auch andere Muscheln. Zum Beispiel ist die Tcsh-Shell immer noch da und ist immer noch eine Option. FreeBSD verwendet tsch als Standard-Root-Shell und Asche als seine standardmäßige interaktive Shell. Wenn Sie die C-Programmierung regelmäßig verwenden, ist tsch möglicherweise besser für Sie geeignet. Allerdings ist es bei weitem nicht so gebräuchlich wie bash oder zsh.

So wechseln Sie zwischen den Shells

Es ist einfach, zu einer neuen Shell zu wechseln, um es auszuprobieren. Installieren Sie einfach die Shell aus dem Paket-Manager Ihrer Linux-Distribution und geben Sie den Befehl ein, um die Shell zu starten.

Angenommen, Sie möchten zsh auf Ubuntu ausprobieren. Sie würden die folgenden Befehle ausführen, um sie zu installieren und dann zu starten:

sudo apt installieren zsh zsh

Sie würden dann in einer zsh-Shell sitzen. Geben Sie "exit" in der Shell ein, um es zu verlassen und zu Ihrer aktuellen Shell zurückzukehren.

Dies ist nur vorübergehend. Wenn Sie ein neues Terminalfenster öffnen oder sich in der Befehlszeile an Ihrem System anmelden, wird Ihre Standardshell angezeigt. Um die Shell zu ändern, die Sie bei der Anmeldung sehen, die als Login-Shell bekannt ist, können Sie in der Regel den Befehl chsh oder "Shell ändern" verwenden.

Um diesen Befehl zu verwenden, müssen Sie zuerst den vollständigen Pfad zu Ihrer Shell mit dem Befehl which finden. Nehmen wir beispielsweise an, wir wollten zur zsh-Shell wechseln. Wir würden den folgenden Befehl ausführen:

which zsh

Unter Ubuntu sagt dies, dass die zsh-Binärdatei bei /usr/bin/ zsh gespeichert wird.

Führen Sie den folgenden Befehl aus, geben Sie Ihr Passwort ein und Sie werden aufgefordert, eine neue Login-Shell auszuwählen:

chsh

Nach dem obigen Befehl würden wir /usr/bin/ zsh eingeben. Die zsh-Shell wäre dann unser Standard, bis wir den Befehl chsh ausführen und ihn zurücksetzten.