Die neuesten Linux-Distributionen enthalten bash als Standardshell, obwohl es andere (wohl) bessere Shells gibt.
Ich versuche zu verstehen, ob dies ein historisches Überbleibsel ist, das niemand ändern möchte, oder gibt es einige gute Gründe, die Bash zur ersten Wahl machen?
/bin/sh
, der Standard-Shell für 'normale' UNIX-es ...bash
ist die beste Shell, weil ich sie gut kenne und sie überall ist, alles, was ich brauche, kurz und relativ einfach ausführt, leicht lesbar ist und von Leuten verstanden werden kann, ohne zu wissen, wie man Bash-Skripte erstellt. Was willst du noch von einer Shell? Wenn Sie viele Programmierfunktionen wünschen, verwenden Sie eine Shell falsch.Antworten:
Die kurze Antwort ist, weil Linux wirklich GNU / Linux ist. Nur der Kernel ist Linux, aber die Basissammlung der Dienstprogramme, die die Unix-ähnliche Umgebung bereitstellen, wird von GNU bereitgestellt, und die GNU-Shell ist bash.
Wie gesagt, das ist die kurze Antwort;)
bearbeitet, um einige zusätzliche Kommentare hinzuzufügen ...
Lassen Sie mich vorab sagen, dass ich kein Unix-Historiker bin, also kann ich nur IMHO antworten
Ein paar Punkte, vor allem bash ist die Küchenspüle von Muscheln, wie Emacs für Redakteure ist.
Zum Zeitpunkt der Veröffentlichung von bash gab es keine freien ksh-Implementierungen, tcsh war ein freier csh-Ersatz, aber Stallman hatte eine Parole gegen csh für die Shell-Programmierung.
Als interaktive Shell hatte Bash einen hervorragenden Verlaufs- / Befehlsrückruf sowie das Speichern des Verlaufs von Sitzung zu Sitzung. Es war ein Rückgang im Ersatz für sh, bsh, ksh für die Shell-Programmierung und sorgte für eine anständige interaktive Shell.
Wie ein Schneeball, der bergab rollt, hat Bash an Dynamik und Größe gewonnen.
Ja, es gibt Dutzende anderer Muscheln; Muscheln, die besser für den individuellen Zweck oder Geschmack geeignet sind, aber für eine einzige Allround-Muschel-Bash gute Arbeit leisten und die seit über 20 Jahren viel im Auge behalten.
quelle
Bash hat einige potenzielle Konkurrenten:
/bin/sh
. Ash (womit ich meine, dass jede der losen Muschelfamilien, Asche genannt, klein und schnell ist, ohne interaktive Funktionen (nur zum Bearbeiten von Skripten). Die Wiederbelebung der Asche ist relativ neu. In den neunziger Jahren fehlten den vorhandenen Varianten viele Funktionen.Außerdem ist bash die offizielle GNU- Shell, und Linux-Systeme sind wirklich GNU / Linux : Viele der Kernprogramme stammen von GNU, auch wenn der bekannteste Teil, der Linux-Kernel, dies nicht tut. Zu der Zeit, als es zum De-facto-Standard wurde, war bash bekannt, hatte einen offiziellen Status und eine Reihe anständiger Funktionen.
quelle
/bin/sh
, andere Asche. Zum Beispiel Ubuntu/bin/sh
wurdedash
(die Gabel von Asche gehalten von Debian) für eine Weile. Bash hat mehr Funktionen, Asche ist kleiner und schneller. Beide sind POSIX-konform (oder zumindest in der Praxis ausreichend konform).Einfachste Antwort? Weil etwas "muss" der Standard sein. Die vernünftigste Standardeinstellung ist die, mit der die meisten Benutzer bereits vertraut sind. In diesem Punkt ist Bash eine gute Wahl. Jeder hat die Freiheit zu wählen, welches in seiner Welt das Beste ist. Die meisten wählen die Standardeinstellung, wenn sie immer das getan hat, was sie brauchen.
quelle
Von DOS kommend (mit installiertem Doskey) habe ich die Funktion zum Aufrufen der letzten Befehle durch einfaches Bewegen des Cursors nach oben / unten wirklich vermisst. BASH war IMO die erste Shell, die dies auf * nix implementiert hat.
Wahrscheinlich mochten die meisten Jungs ab dieser Generation Bash.
quelle
tcsh
die erste * nix-Shell war, die mit den Pfeiltasten durch den Shell-Verlauf navigierte.Alle anderen Antworten sind großartig, aber vom praktischen Standpunkt aus gesehen: Wenn ich mich vor ein unbekanntes System setze (oder von einem entfernten Standort aus darauf zugreifen kann) und etwas tun muss, kann ich mich darauf verlassen, dass bash auf allen außer den ältesten Systemen verfügbar ist. Ich kann einfach weitermachen und Dinge erledigen.
Wie in anderen Antworten und in Ihrer Frage erwähnt, gibt es viele andere Shells (ich höre viele gute Dinge über zsh, habe es aber nicht ausprobiert.), Aber sie variieren in Bezug auf die Syntax und manchmal die verwendeten Befehle Dinge erledigen. Wenn ich nur etwas erledigen will, ist bash schwierig genug, ohne mich an eine andere Shell anpassen zu müssen.
Wenn ich ein allgemein nützliches Shell-Skript schreibe, schreibe ich es für bash und weiß, dass es fast überall ausgeführt wird, wenn ich sehr vorsichtig bin, keine systemabhängigen Dinge zu tun.
quelle
Trägheit.
Bash war zufällig die am leichtesten verfügbare kostenlose Shell, als Linux-Systeme (GNU / Linux, wenn Sie es vorziehen) auftauchten. Die Tatsache, dass es aus dem GNU-Projekt stammt, hat nicht geschadet.
Was den Grund angeht, warum es immer noch die Standard-Shell ist, gab es nie einen Grund genug, sie zu ändern. Selbst wenn eine andere Shell besser ist, hat die Verwendung derselben Standard-Login-Shell für verschiedene Distributionen Vorteile, und es wäre schwierig, alle (Debian, Red Hat, Suse usw.) dazu zu bringen, auf etwas anderes umzusteigen.
Und schließlich ist es nur eine Voreinstellung. Jeder Benutzer kann
chsh
damit seine Login-Shell ändern. Es ist nicht erforderlich, die Standardeinstellung für alle Benutzer zu ändern.quelle