Was sind die grundlegenden Unterschiede zwischen den Mainstream * NIX-Shells und welche Szenarien könnten Sie dazu veranlassen, diese übereinander zu verwenden? Ich verstehe, dass ein Teil davon wahrscheinlich auf die Vorlieben der Benutzer zurückzuführen ist, aber ich habe bisher nur Bash verwendet und bin gespannt, wo eine andere Shell nützlich sein könnte.
Hat dies auch Auswirkungen auf vom Benutzer geschriebene Shell-Skripte, wenn sie unter der einen oder anderen Shell ausgeführt werden, oder handelt es sich lediglich um eine Änderung der Shell oben in der Datei? Mein Instinkt sagt, dass es nicht so einfach ist.
jsh
(was keine Java-Shell ist!) Verwendet , bei der eine variable Substitution wie${VAR#foo}
und fehlt${VAR%bar}
.tcsh
ist es sehr beliebt bei UNIX-Benutzern, die ihre Tricks vor Mitte der 90er Jahre gelernt haben (was die Einführung von beidenbash
und sahzsh
), insbesondere bei älteren UNIX +C
-Entwicklern, die das Leben mitcsh
(Erinnerung, das c incsh
steht für dieC
Sprache) begonnen haben , was die Inspiration für die Unterschiede zu Muscheln im Borowski-Stil war). Siehe auch Csh-Programmierung, die als schädlich eingestuft wird. Ich verwende sie häufig für Tipps zu POSIX Deep Magic (zusätzlich zu den Anti-Csh-Argumenten).Es gibt zwei grundlegende Varianten von Shell: sh (z. B. bash) und csh (z. B. tcsh). Bei der interaktiven Verwendung kommt es hauptsächlich darauf an, was Sie gewohnt sind. Ich habe jahrelang csh und dann tcsh verwendet, und es wäre schmerzhaft zu wechseln, nur weil ich es so gewohnt bin. Ich habe auch Bash verwendet und ich glaube nicht, dass es zwingende Gründe für einen Wechsel gibt. Außer vielleicht, wenn der eine oder andere nicht auf Computern verfügbar ist, die Sie regelmäßig verwenden.
Bei der Programmierung unterscheidet sich die Syntax. Sie können nicht nur die Shell ändern, sondern müssen auch die Syntax des Skripts ändern. Für die Skripterstellung möchten Sie sh oder bash verwenden. Die Syntax ist für Skripte viel zugänglicher, wie hier erklärt (danke an Riccardo Murri für den Link. Dies ist eine gute Anleitung für Bash-Skripte.
Wenn Sie sich nicht für eine Shell entschieden haben und einige Skripte schreiben möchten, würde ich bash verwenden, um die Menge der Dinge zu reduzieren, die Sie lernen müssen.
quelle
Früher, als AT & T UNIX erfand, gab es Bourne Shell, geschrieben von Steve Bourne. Es war ziemlich einfach und es fehlten viele Tools, die wir heutzutage für selbstverständlich halten.
AT & T befand sich nicht wirklich im UNIX-Geschäft, daher übernahm Berkelely zu diesem Zeitpunkt etwas das grundlegende Betriebssystem und nahm einige Änderungen an BSD UNIX vor. Unter vielen Änderungen befand sich eine neue Shell mit dem Namen csh, die viele Verbesserungen gegenüber sh aufwies, einschließlich einer besseren interaktiven Verwendung der Auftragssteuerung und so weiter. Leider entschieden sie, dass die sh-Programmiersyntax nicht funktioniert und erstellten ihre eigenen, (etwas schlecht) kopierten C-Codierungsstile. (Ein klassisches Rant ist http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Nun gab es also zwei Syntaxen.
Später haben sie CSH verbessert, indem sie die Tab-Vervollständigung und einige andere Dinge hinzugefügt haben. Dies wurde zu tcsh, und wenn Sie CSH verwenden, ist dies wahrscheinlich derjenige, den Sie verwenden.
AT & T entschied, dass es nicht vollständig aus dem UNIX-Geschäft heraus war, und sie haben es auch aufpoliert. David Korn (netter Kerl) hat die Korn-Shell erstellt. Basierend auf der Idee, die Bourne-Shell-Syntax zu erweitern, wurden sowohl für Programmierer als auch für die interaktive Verwendung viele Dinge hinzugefügt. Es gibt tatsächlich einige Versionen, und Sie sehen möglicherweise selten Dinge wie ksh88 und ksh93, die die Varianten bezeichnen.
Dann kamen FSF und das GNU OS. Sie wollten ihr eigenes UNIX-kompatibles Betriebssystem namens Hurd erstellen und wollten eine bessere Shell dafür. Sie riefen nach Bourne Again SHell. Ungefähr zu dieser Zeit kamen POSIX-Regeln hinzu, und sie wollten die POSIX-Shell erstellen. Sie sahen sich um, übernahmen die Syntax der Bourne-Shell und die Verbesserungen der Korn-Shell und stahlen und erweiterten die interaktiven Funktionen von tcsh. Es wurde zur De-facto-Shell unter Linux, ist also weit verbreitet.
Es gibt auch die zsh, die als "ultimative" Shell geschrieben wurde. Es ist auch in der Linux-Welt sehr verbreitet. Es hat die Bash verlängert (und ein bisschen gekreuzt, einige neue Dinge gingen zurück auf die Bash).
Wenn ich eine Muschel auswählen würde, würde ich bash oder zsh auswählen. Bash ist möglicherweise an ein paar Stellen mehr als zsh. zsh ist mächtiger, aber bash hat mir gut getan. Real / bin / sh Die Bourne-Shell gibt es nur aus historischen Gründen. bash hat so ziemlich alles, was ksh zu bieten hat und noch viel mehr. Die Syntax ist sauberer als die von csh oder tcsh und bietet bessere Funktionen als beide.
Das Konvertieren eines Skripts hängt davon ab, von was zu was. Der Bourne-Shell-Stil (sh, ksh, bash, zsh) zum oder vom csh-Stil (csh, tcsh) ist schwierig. Das Wechseln von Alt zu Neu (/ bin / sh => bash, / bin / ksh => zsh) ist einfacher als auf die andere Weise.
quelle
Die beiden Hauptzweige von Shells sind die Bourne-Shell-Derivate (sh, bash, ksh, ash, yash und zsh) und die csh-Derivate (tcsh und ... uhm ... tcsh).
Ich vermute (obwohl ich keine tatsächlichen Zahlen habe), dass bash am häufigsten verwendet wird, es scheint jedoch die Standard-Shell in den meisten Linux-Versionen zu sein.
Die meisten Dinge, die in einem Borowski-Shell-Derivat geschrieben wurden, funktionieren wahrscheinlich auch in anderen. Die meisten in einer Bourne-Shell geschriebenen Dinge müssen wahrscheinlich geändert werden, um unter csh oder tcsh ausgeführt zu werden.
Persönlich habe ich ksh benutzt, als ich angefangen habe, weil es das ist, was auf dem System war, das ich benutzte. Ich benutze jetzt hauptsächlich Bash.
quelle
Ich habe im Laufe der Zeit zahlreiche Muscheln verwendet. Nicht alles super Fortgeschrittene, aber jede Menge praktisches Sysadmin- und Programmiermaterial, das ausreichend angepasst werden musste.
Ich denke, zsh hat mehr Anpassungsmöglichkeiten, zumindest früher, aber nach einigen Jahren hatte ich genug mit der Stabilität und der Zeichenkodierung. Bash ist absolut stabil, hatte nie ähnliche Probleme und wird überall installiert.
quelle