Warum ist Bash die Standard-Shell in den meisten Betriebssystemen (Ubuntu, Fedora, OSX usw.)? Warum verwenden viele fortgeschrittene Benutzer meistens zsh? Wenn es so gut ist, warum ist es nicht die Standardeinstellung?
Ich benutze beide Ich sehe keinen Unterschied, alle meine Aufgaben sind einfach :)
bash
default
zsh
history-of-ubuntu
Talal
quelle
quelle
ksh
, dann ist es auch so, dass die meisten Leute eine andere Shell verwenden, und dies allein würde erklären, warumksh
nicht die Standard-Shell ist. Ich glaube jedoch nicht, dass dies der Grund ist. Warten wir auf eine Killer-Antwort, von der ich sicher bin, dass sie diese Frage erhalten wird.Antworten:
Ich habe etwas darüber gelesen und die Schlussfolgerung scheint zu sein, dass es sich um die Standard-Shell von GNU handelt (die von den meisten Linux-basierten Betriebssystemen verwendet wird) und daher einfach als Teil von GNU gepackt ist, während die Entwicklung 20 Jahre zurückliegt Stabil und abgerundet, ist es einfach der beste Allrounder und erfüllt die Anforderungen aller, außer der fortgeschrittensten Benutzer.
Weitere Informationen finden Sie unter Warum ist Bash Standard unter Linux? (die gleiche Frage unter Unix & Linux).
Um noch ein bisschen mehr hinzuzufügen, es gibt viele andere Shells, die Sie ausprobieren können. Wenn Sie interessiert sind, hier ein paar Beispiele aus dieser Antwort :
quelle
Die Bourne - Shell ( sh wieder in den Tag) der AT & T - Zweig von Unix wurde verbessert auf und von der Korn - Shell, superceded KSH . ksh stammt ebenfalls von AT & T Bell Labs und war keine GPL (aktuelle Version ist Eclipse Public License). Die C-Shell csh stammt aus der Berkeley-Version von Unix und war auch keine GPL (BSD-Lizenz) und verwendete auch eine andere Syntax als sh. Die Z-Shell, zsh, ist eine Verbesserung gegenüber sh, jedoch keine GPL (MIT-ähnliche Lizenz). Bash war eine Verbesserung von sh, verwendete die GPL und von GNU. Nur auf Lizenz allein wäre Bash wahrscheinlich die Wahl für ein GPL-Betriebssystem gewesen. Vor allem, wenn eine Muschel ein Kernstück einer Distribution ist.
Bash war aber auch ein GNU-Projekt, da es meiner Meinung nach aktiver entwickelt und Beiträge einfacher macht als ein Legacy-Produkt aus Berkeley Unix oder AT & T Unix. Ein sehr guter Fall könnte sein, dass zsh eine bessere Shell ist und war als Bash, aber nicht genug, um den unterschiedlichen Lizenz- und Nicht-GNU-Projektstatus zu überwinden.
Als Linux-Distributionen zum ersten Mal auftauchten und ihre Standard-Shell auswählten (Anfang bis Mitte der 90er Jahre), gab es weder einen Github (2008) noch eine SourceForge (1999). Zu diesem Zeitpunkt hatten GNU-Projekte meines Erachtens einen echten Vorteil gegenüber Nicht-GNU-Projekten, da sie wahrgenommen und gezeichnet wurden und neue Entwickler mit einbezogen wurden. Daher könnten Distributionen Z-Shell als besser ansehen, aber auch damit rechnen, dass Bash in Zukunft einen guten Support und eine gute Wartung erhält und dass weitere Funktionen hinzugefügt werden, die es ihm ermöglichen, zsh nachzuholen.
Jetzt, da Bash jahrelang den Standardstatus hatte, ist es zu einem Standard geworden, über den Bücher geschrieben wurden. Es gibt ein Buch, das sowohl Bash als auch Z-Shell behandelt , aber kein Buch, das es ausschließlich behandelt, während es mehrere gibt, die dies für Bash tun.
Und zu diesem Zeitpunkt, wenn Distributionen die Standardeinstellungen für Upgrades eines vorhandenen Systems ändern würden, würden Setups unterbrochen, da einige der Initialisierungsdateien unterschiedliche Namen haben (z. B. .bashrc versus .zshrc) und der Inhalt der Dateien möglicherweise eine inkompatible Syntax aufweist. Daher würden sie dies nur sehr ungern tun und neue Downloads mit zsh als Standard und Upgrades mit bash belassen. Zwei verschiedene Standardeinstellungen für dieselbe Distribution möchten sie wahrscheinlich nicht unterstützen, und Benutzer / Unternehmen möchten sich auch nicht damit befassen.
quelle
Die Unix-Shell-Sprachen sind alle hässlich. Einige besonders (
csh
), andere vielleicht etwas weniger (ksh
? Ich weiß es eigentlich nicht), aber wenn es um Aspekte wie Lesbarkeit und Strenge bei großen Projekten geht, kann keiner von ihnen an gut gestaltete Mehrzwecksprachen wie z Python, C # oder Haskell. Wenn Sie also etwas Festes wollen, werden Sie nie einen der Schalengeschmacksrichtungen wählen.Sie wählen sie, wenn Sie einfache Aufgaben schnell erledigen möchten. Dafür benötigen Sie:
sh
Kompatibilität ist hier ein großes Plus, und je beliebter, desto besser.Wie Sie sehen, ist die Popularität in diesen Shell-Sprachen eher ein wichtiger Punkt als in Allzwecksprachen. Selbst wenn
ksh
es als Sprache an sich ein bisschen „besser“ ist, ist es weniger ratsam, sie zu verwenden, wenn siebash
nur ein bisschen populärer ist (was in dem relevanten Sektor der Fall war, da sie zuerst als Standard gewählt wurde) für GNU).Die Leute, die den Wechsel vornehmen, sind überlegt und erfahren genug, um problemlos zu ihrer Lieblingsshell zu wechseln. OTOH, ein Anfänger, der gezwungen ist, mit einer weniger populären Shell zu arbeiten, wird schnell verwirrt sein, wenn er das Internet nach etwas fragt und es nicht funktioniert. Daher ist jede Distribution, die sich nicht nur an Unix-Veteranen richtet, mit einem gewissen Risiko verbunden, wenn sie etwas anderes als
bash
den Standard darstellt - ein Schritt, von dem nur relativ wenige Menschen (und nur wenig) profitieren würden.quelle
quelle
"Critical Mass" ist die Hauptantwort, IMO. Bash ist nicht nur für die Befehlszeilen-Arbeit gedacht, sondern auch für die Skripterstellung. Es gibt eine riesige Anzahl von Bash-Skripten. Egal, wie viel besser eine Alternative für die Interaktion ist, die Notwendigkeit, diese Skripte einfach "plug and play" zu können, überwiegt diese Vorteile. Als solche ist die einzige Shell, die Bash jetzt realistisch vom Platz nehmen kann, eine, die vollständig abwärtskompatibel ist, und der wahrscheinlichste Kandidat dafür ist ... die nächste Version von Bash.
quelle