Bash oder Zsh, was ist der Unterschied, warum den einen oder anderen benutzen? [Duplikat]

23

Die Frage sagt also so ziemlich alles aus. Ich bin auf Snow Leopard und entwickle viel im Web, insbesondere in Rails 3, bei dem die Konsole stark genutzt wird.

Ich habe einige bemerkenswerte Blogger usw. gesehen, die Zsh als ihre Präferenz gegenüber Bash erwähnt haben, aber ich weiß nicht, welchen Unterschied es machen würde.

Kann mir jemand einen guten Vergleich darüber geben, was für einen Unterschied es gibt und warum die eine oder andere Option besser ist?

Andrew
quelle
1
Wenn das hilft, ein Artikel aus dem Jahr 2016: stackabuse.com/zsh-vs-bash
Cœur
Diese Frage ist wieder relevant geworden, weil Äpfel
amar

Antworten:

16

Dies ist aus der Zsh FAQ :

2.5: Ähnlichkeiten mit bash

Die Bourne-Again-Shell, bash, ist eine weitere verbesserte Bourne-ähnliche Shell. Der offensichtlichste
Der Unterschied zu zsh besteht darin, dass nicht versucht wird, die Korn-Shell zu emulieren. Seit beidem
Muscheln befinden sich in aktiver Entwicklung. Es ist wahrscheinlich nicht sinnvoll, zu spezifisch zu sein 
Hier. Allgemein hat bash der Einhaltung von Standards (z. B. POSIX) mehr Aufmerksamkeit geschenkt
länger, und hat bisher die abstruseren interaktiven Funktionen (programmierbar 
Vervollständigung usw.), die zsh hat.

Ich habe sie beide verwendet, bevorzuge aber Bash jetzt Tage, da die Maschinen, auf denen ich arbeite, standardmäßig durchgehend Bashs ausführen. Der Kommentar zur Einhaltung der Standards ist mir wichtig, da dies Konsistenz zwischen den Betriebssystemen bedeutet.

Zsh hat gute Autovervollständigungsfähigkeiten, aber ich fand immer wieder Fälle, in denen es nicht wusste, was ich wollte. Das war vor einigen Jahren und könnte sich seitdem verbessert haben.

Ich habe festgestellt, dass das Aktivieren von "vi-mode" ( set -o vi) in Bash die Befehlszeilenumgebung viel angenehmer macht als normalerweise. Deshalb mache ich das sofort in meiner .bashrcDatei.

Beim Schreiben von Shell-Skripten programmiere ich nie in bash oder zsh - ich programmiere mit sh ( /bin/sh), weil es der kleinste gemeinsame Nenner ist und die geringste Wahrscheinlichkeit für Kompatibilitätsprobleme besteht. Das ist nur eine alte Angewohnheit, die mir gut standgehalten hat.

Greg
quelle
2
Ein Unterschied besteht darin, dass sich Platzhalterzeichen unterschiedlich verhalten. Um zum Beispiel alle Instanzen von Dateien mit dem Namen "vi" zu finden, kann man bash with command verwenden locate */vi. Mit zsh lautet das Ergebnis für den gleichen Befehl zsh: no matches found: */vi. Damit die Suche in zsh funktioniert, muss die Suchanfrage in Anführungszeichen gesetzt werden locate "*/vi".
Pro Backup
Aber beide Beispiele funktionieren in Bash.
John Stack