Startseite » wie man » Was ist der Unterschied zwischen Bash, Zsh und anderen Linux-Shells?

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

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

    Was machen Muscheln??

    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 durch eine andere ersetzen, wenn Sie möchten.

    Die erste Shell-Umgebung war die Thompson-Shell, die in Bell Labs entwickelt und 1971 veröffentlicht wurde. Shell-Umgebungen bauen seitdem auf dem Konzept auf und bieten zahlreiche neue Funktionen, Funktionen und Verbesserungen der Geschwindigkeit.

    Bash bietet beispielsweise die Vervollständigung von Befehlen und Dateinamen, erweiterte Skriptfunktionen, einen Befehlsverlauf, konfigurierbare Farben, Befehlsaliase und eine Vielzahl anderer Funktionen, die 1971 nicht verfügbar waren, als die erste Shell veröffentlicht wurde.

    Die Shell wird auch im Hintergrund von verschiedenen Systemdiensten verwendet. Linux-Distributionen enthalten viele Funktionen, die als Shellskripts geschrieben sind. Diese Skripts sind Befehle und andere erweiterte Shell-Skriptfunktionen, die in der Shell-Umgebung ausgeführt werden.

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

    Der bekannteste Vorläufer moderner Muscheln ist die Bourne-Schale - auch bekannt als "sh" -, die nach ihrem Schöpfer Stephen Bourne benannt wurde, der in den Bell Labs von AT & T arbeitete. 1979 veröffentlicht, wurde es zum Standardbefehlsinterpreter in Unix, da es die Befehlssubstitution, das Piping, die Variablen, das Testen von Zuständen und das Schleifen sowie weitere Funktionen unterstützt. Es bot nicht viel Anpassungsmöglichkeiten für Benutzer und unterstützte nicht so moderne Feinheiten wie Aliase, Befehlsvollendung und Shell-Funktionen (obwohl letztere letztendlich hinzugefügt wurde)..

    Die C-Schale oder "csh" wurde in den späten 70er Jahren von Bill Joy an der University of California, Berkley, entwickelt. Es wurden viele interaktive Elemente hinzugefügt, mit denen Benutzer ihre Systeme steuern können, wie beispielsweise Aliasnamen (Abkürzungen für lange Befehle), Jobverwaltungsfunktionen, Befehlsverlauf und mehr. Es wurde aus der Programmiersprache C erstellt, in der das Unix-Betriebssystem selbst geschrieben wurde. Dies bedeutete auch, dass Benutzer der Bourne-Shell C lernen mussten, um darin Befehle eingeben zu können. Außerdem hatte csh einige Fehler, die von Benutzern und Entwicklern über einen längeren Zeitraum hinweg behoben werden mussten. Am Ende benutzten die Leute die Bourne-Shell für Skripte, weil sie nicht interaktive Befehle besser handhabten, aber für die normale Verwendung bei der C-Shell stecken.

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

    Die Geburt von bash

    Die Portable Operating System Interface für Unix oder POSIX war eine weitere Antwort auf die hektischen proprietären csh-Implementierungen. Es wurde erfolgreich ein Standard für die Interpretation von Befehlen erstellt (unter anderem) und schließlich wurden viele Funktionen 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 als Bestandteil seines freien Betriebssystems und nannte sie "Bourne Again Shell" oder "bash"..

    Bash wurde in den Jahrzehnten seit seiner ersten Veröffentlichung im Jahr 1989 verbessert, ist jedoch bei den meisten Linux-Distributionen heute noch die Standard-Shell. Es ist auch die Standard-Shell in MacOS von Apple und kann unter Microsoft Windows 10 installiert werden.

    Neuere Shells: ash, dash, zsh und fish

    Während sich die Linux-Community in den letzten Jahren auf Bash festgelegt hat, haben Entwickler nicht aufgehört, neue Shells zu erstellen, als Bash vor 28 Jahren veröffentlicht wurde.

    Kenneth Almquist erstellte einen Bourne-Shell-Klon, der als Almquish-Shell, A-Shell, "ash" oder manchmal auch "sh" bekannt ist. 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 verwurzeltes Android-Telefon mit BusyBox oder ein anderes Gerät mit der BusyBox-Software-Suite installiert haben, wird der Code von ash verwendet.

    Debian entwickelte eine auf Asche basierende Shell-Umgebung und nannte sie "Strich". Es ist so konzipiert, dass es POSIX-konform und leicht ist. Es ist also schneller als Bash, verfügt jedoch nicht über alle Funktionen. Ubuntu verwendet die Dash-Shell als Standardshell für nicht interaktive Aufgaben, wodurch Shell-Skripts und andere im Hintergrund ausgeführte Aufgaben beschleunigt werden. Ubuntu verwendet jedoch immer noch bash für interaktive Shells, sodass die Benutzer weiterhin die interaktive Umgebung mit allen Funktionen nutzen können.

    Eine der beliebtesten neuen Shells ist die Z-Shell oder "zsh". Zsh ist eine im Bourne-Stil entworfene Shell, die die Funktionen enthält, die Sie in bash finden, und noch mehr. Zum Beispiel verfügt zsh über eine Rechtschreibprüfung, die Möglichkeit, Logins / Logouts zu überwachen, einige integrierte Programmierfunktionen wie Bytecode, Unterstützung für wissenschaftliche Notation in der Syntax, ermöglicht Fließkomma-Arithmetik und weitere Funktionen.

    Eine weitere neuere Shell ist die Friendly Interactive Shell ("Fisch"), die 2005 veröffentlicht wurde. Sie verfügt über eine einzigartige Befehlszeilensyntax, die etwas einfacher zu erlernen ist, aber weder von der Bourne-Shell noch von der C-Shell abgeleitet wird. Dies ist eine interessante Idee, aber was Sie durch die Verwendung von Fisch lernen, hilft Ihnen nicht unbedingt, Bash und andere von Bourne abgeleitete Shells zu verwenden.

    Welche solltest du wählen? (und warum Zsh beliebt ist)

    Sie müssen keine Shell auswählen. Ihr Betriebssystem wählt Ihre Standard-Shell für Sie aus, und diese Auswahl ist fast immer Bash. Setzen Sie sich vor eine Linux-Distribution - oder sogar einen Mac - und Sie haben fast immer eine Bash-Shell-Umgebung. Bash bietet einige erweiterte Funktionen, die Sie jedoch wahrscheinlich nicht verwenden werden, wenn Sie keine Shell-Skripts programmieren.

    Auf Embedded Linux-Systemen oder BSD-Systemen erhalten Sie die Ash-Shell. Ash ist jedoch eine auf Bourne basierende Shell und ist weitgehend kompatibel mit bash. Jedes Wissen, das Sie aus der Verwendung von bash haben, wird auf die Verwendung einer Ash- oder Dash-Shell übertragen, obwohl einige fortgeschrittene Skriptfunktionen in dieser einfachen Shell nicht verfügbar sind.

    Nahezu jede Shell, der Sie begegnen, basiert auf Bourne und funktioniert ähnlich, einschließlich zsh.

    Deshalb ist zsh beliebt. Diese neuere Shell ist mit bash kompatibel, enthält jedoch weitere Funktionen. Die zsh-Shell bietet integrierte Rechtschreibkorrektur, verbesserte Befehlszeilenvervollständigung, ladbare Module, die als Plug-Ins für Ihre Shell fungieren, globale Aliasnamen, mit denen Sie Dateinamen oder alles andere in der Befehlszeile anstelle von Befehlen und verwenden können mehr theming unterstützung. Es ist wie Bash, aber mit vielen Extras, zusätzlichen Funktionen und konfigurierbaren Optionen können Sie es zu schätzen wissen, 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 lernen. Sie erhalten lediglich zusätzliche Funktionen. Wenn Sie mit zsh vertraut sind, können Sie zur Bash wechseln, ohne eine andere Syntax zu lernen. Sie haben einfach keinen Zugriff auf diese Funktionen.

    „Oh mein ZSH“ ist ein Tool, mit dem Sie zsh-Plug-Ins einfacher aktivieren und zwischen vorgefertigten Themen wechseln können. So können Sie Ihre zsh-Shell schnell anpassen, ohne stundenlang Änderungen vornehmen zu müssen.

    Es gibt auch andere Muscheln. Zum Beispiel ist die tcsh-Shell immer noch vorhanden und ist immer noch eine Option. FreeBSD verwendet tsch als Standard-Root-Shell und ash als standardmäßige interaktive Shell. Wenn Sie die C-Programmierung regelmäßig verwenden, könnte TSE für Sie besser geeignet sein. Es ist jedoch bei weitem nicht so häufig wie bash oder zsh.

    So wechseln Sie zwischen Shells

    Es ist einfach, zu einer neuen Shell zu wechseln, um es auszuprobieren. Installieren Sie einfach die Shell vom Paketmanager Ihrer Linux-Distribution und geben Sie den Befehl zum Starten der Shell ein.

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

    sudo apt install zsh zsh

    Sie würden dann in einer Zsh-Shell sitzen. Art " Ausfahrt “An der Shell, um sie zu verlassen und zu Ihrer aktuellen Shell zurückzukehren.

    Das ist nur vorübergehend. Wenn Sie ein neues Terminalfenster öffnen oder sich über die Befehlszeile bei Ihrem System anmelden, wird Ihre Standard-Shell angezeigt. Um die Shell zu ändern, die Sie sehen, wenn Sie sich als Login-Shell anmelden, können Sie im Allgemeinen die chsh , oder "Shell wechseln", Befehl.

    Um diesen Befehl verwenden zu können, müssen Sie zunächst den vollständigen Pfad zu Ihrer Shell mit dem Befehl which suchen. Nehmen wir zum Beispiel an, wir wollten zur zsh-Shell wechseln. Wir würden den folgenden Befehl ausführen:

    welche zsh

    Auf Ubuntu heißt dies, dass die zsh-Binärdatei unter / usr / bin / zsh gespeichert ist.

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

    chsh

    Gemäß dem obigen Befehl würden wir eintreten / usr / bin / zsh . Die zsh-Shell wäre dann unser Standard, bis wir die chsh Befehl und änderte es zurück.