it-swarm.com.de

Welche Linux Shell sollte ich verwenden?

Ich habe bash, csh und tcsh verwendet. Aber ich habe diese Frage gefragt, und Jonathan hat mir mitgeteilt, dass man csh nicht trauen kann. Was ist die Linux-Shell für die Entwicklung? und warum?

53
Scottie T

Die bei Linux am weitesten verbreitete Shell ist bash. Wenn Sie keinen guten Grund haben, eine Alternative zu verwenden, würde ich vorschlagen, dass Sie sich an bash halten oder die von Ihrem Projektteam am häufigsten verwendete Shell (oder dass der Großteil der Shell-Skripts, mit denen Sie arbeiten müssen) verwendet.

Der einzige andere sehr häufige Anwärter ist Dash, der im Ubuntu-Projekt immer mehr Verwendung findet.

Das ist wirklich persönliche Präferenz, abgesehen von csh .

61
Kyle Burton

Ich bevorzuge zsh.

Allein die Tab-Vervollständigung lohnt sich:

  • Es erweitert Platzhalter, wenn Sie möchten (praktisch, wenn Sie alle Dateien außer einer Datei in einem Verzeichnis löschen möchten)
  • Zeigt nach Auswahl eines Programms eine Liste von Schaltern an
  • Unterhalb der Zeile, an der Sie gerade arbeiten, werden Optionen zum Fertigstellen von Registerkarten angezeigt.

http://zsh.sourceforge.net/

60
SomeDork

Verwenden Sie für Interaktivität Zsh. Ich war eine Zeit lang der Betreuer des FreeBSD-Ports der Bash-Tab-Completion-Skripte, gab es jedoch auf, sobald ich Zsh zum ersten Mal versuchte. Es kann alles, was Bash kann, aber einfacher und eleganter. Es hat auch die Nice-Eigenschaft, extrem bashartige Tastenanschläge zu haben. Wenn Sie also ein System ohne Zsh verwenden, können Sie dies auch tun (auch wenn es sich nicht als "schön" anfühlt).

Verwenden Sie für das Scripting die Bourne Shell (sh). Es ist die POSIX-Standard-Skriptsprache, und Ihre Skripte funktionieren garantiert überall. Bash und Zsh und andere Shells haben Nice-Erweiterungen, die Sie vermissen werden, aber diese binden Sie an ein bestimmtes Setup. Ignorieren Sie diesen Ratschlag für Skripte, die nur für den persönlichen Gebrauch bestimmt sind und die Sie sicher nicht anderswo ausführen werden. Beachten Sie jedoch, dass dies ein echter Kompromiss ist, den Sie berücksichtigen müssen.

Aber zusammenfassend, Zsh. Ich kenne niemanden, der es ausprobiert hat und nicht sofort und dauerhaft gewechselt hat. Es ist wirklich so gut.

27
Kirk Strauser

Fish (Friendly Interactive Shell) ist eine schöne Alternative zu den meisten anderen Muscheln. Es verfügt über eine konsistente Syntax, Nice-Tab-Vervollständigung und Syntax-Hervorhebung, ist leicht zu erlernen und zu verwenden (insbesondere wenn Sie keine Gewohnheiten von anderen Shells haben) und verfügt über eine hervorragende Laufzeithilfe.

Nachteil ist, dass es unberechenbar entwickelt ist, eine kleine (aber hilfreiche) Benutzerbasis hat und sich sehr von anderen Shells unterscheidet. Die Rückwärtskompatibilität mit Shell-Idiomen hatte keine Priorität.

In vielen Fällen ist das gut ... Viele Standard-Shells haben wirklich dumme Wege, Dinge zu tun, nur weil es immer so gemacht wurde. "do/done", "case/esac", "if/fi"? Dies ist der Wahnsinn, mit dem der Fisch aufhört.

Es lohnt einen Blick.

22
Myrddin Emrys

Da ich der Meinung bin, dass ich die Person bin, die vorgeschlagen hat, etwas anderes als C Shell zu verwenden, sollte ich meine Bemerkungen vielleicht ein wenig qualifizieren und dann diejenigen unterstützen, die 'bash unter Linux und Korn Shell auf anderen Plattformen sagten (sofern nicht bash installiert ist) da auch)'.

Im Gegensatz zu Editoren (bevorzugen Sie vim oder emacs), ist die Wahl der Shell teilweise eine Frage der Vertrautheit und teilweise eine Frage der Präferenz. Es gibt viele, die C Shell mögen, obwohl ich glaube, dass es weniger leicht programmierbar ist als Bourne Shell und Derivate. Was ich in meinem .cshrc habe, ist in der Tat äquivalent zu exec /bin/ksh (es ist nicht identisch, dass ich eine Login-Shell ausführen möchte - eine, die das Profil liest usw.), aber ich würde niemanden verurteilen, der C verwendet Shell oder ein Derivat, wenn es sich um eine informierte Entscheidung handelt.

Wenn Sie sich entscheiden, etwas anderes als C-Shell zu verwenden, befinden Sie sich grundsätzlich im Bourne-Shell-Camp, für das der POSIX-Standard mehr oder weniger das erwartete Verhalten und dann die verschiedenen Shells angibt - also Bourne, Korn oder Born Again-Shells - fügen Sie einige Features hinzu (oder subtrahieren Sie sie im Fall der klassischen Bourne Shell). Wenn Sie unter Linux jemals von Linux zu HP-UX, Solaris oder AIX (dem überlebenden Trio der klassischen, von AT & T abgeleiteten Unix-Varianten) wechseln müssen, sollten Sie sicherstellen, dass Sie Ihre Shell-Skripts in der klassischen Bourne-Shell, jedoch über Korn schreiben Shell ist auch ziemlich sicher. Beachten Sie jedoch, dass Sie unter Linux #!/bin/sh schreiben und Bash erhalten können. Auf den anderen Plattformen erhalten Sie Bourne Shell.

Ich wechsle zwischen Korn Shell und Bash ohne größere Probleme - und selten mit kleineren Problemen. Ich neige dazu, mich von den Ecken der beiden Sprachen fernzuhalten, die nicht genau definiert sind - was in beiden Definitionen bedeutet. Ein weiteres Problem für Benutzer, die Linux verwenden, ist, dass die GNU - Tools mehr Optionen als die klassischen Unix-Versionen bieten, und Sie können die Portabilität nicht aufgrund der von Ihnen verwendeten Shell-Programmierkonstrukte, sondern aufgrund der von Ihnen verwendeten Befehlsoptionen verlieren. Die Erfahrung und der sofortige Zugriff auf die Handbuchseiten anderer Systeme hilft enorm.

18

Normalerweise bleibe ich bei bash, weil es freundlicher ist als geradlinige sh, und es ist die Standardeinstellung in jeder Distribution, die ich regelmäßig benutzt habe (SuSE, RHEL, Ubuntu, Slackware).

Wenn Sie jedoch vorhaben, portable Shell-Skripts zu schreiben, müssen Sie sicherstellen, dass sie alle in real sh laufen.

8
warren

Bash Es ist Standard.

6
Paul Nathan

Das Problem mit csh ist, dass es für das Scripting Mist ist, wie hier erklärt. Es gibt keinen wirklichen Grund, warum Sie es nicht als interaktive Shell verwenden sollten, aber die meisten Leute finden es verwirrend, zwei verschiedene Shells lernen zu müssen und nicht in der Lage zu sein, einige ihrer Skripte auf der Kommandozeile auszuprobieren Gleiches für alles.

Die offensichtlichen Kandidaten für eine interaktive Shell sind bash, dash, zsh und {pd} ksh. Alle implementieren den posix Shell-Standard mit einigen geringfügigen Erweiterungen. Wählen Sie aus, was Sie für den interaktiven Gebrauch bevorzugen, ich würde eher mit bash gehen, nur weil es der Standard für Linux ist, aber sie alle haben ihre Vorzüge, und insbesondere Zsh scheint beliebt zu sein.

Wenn Sie ein Skript schreiben, das portabel sein soll, verwenden Sie #!/Bin/sh und stellen Sie sicher, dass Sie die Standard-Shell-Syntax von Posix verwenden. Wenn es auf bash und ksh funktioniert, ist es wahrscheinlich Standard. Es gibt einige alte Unix-Versionen, die nicht standardmäßig/bin/sh haben, aber ich würde mich nicht darum kümmern, wenn Sie nicht wissen, dass Sie dies tun müssen. Ein weiteres Problem für die Portabilität sind alle Befehlszeilen-Tools, die Sie von Ihrem Skript aus aufrufen.

6
Mark Baker

Niemand hat den Debian-basierten Standard für sh erwähnt, es ist die Debian-Almquist-Shell dash. Es ist vollständig POSIX-kompatibel und hat einen sehr schnellen Start, weshalb es von Debian/Ubuntu für /bin/sh verwendet wird. 

Also benutze ich bash für meine interaktive Shell, aber nur dash für das Scripting. Auf diese Weise weiß ich, dass meine Skripts mindestens POSIX-kompatibel sind und auf jeder anderen POSIX-Shell ausgeführt werden können. ... Ich weiß, dass Portabilität mehr ist als die Shell, aber da ziehe ich die Grenze.

4
J. M. Becker

Ich bin kein großer Ruby-Benutzer, aber http://Rush.heroku.com/ sieht interessant aus

3
Soft

Es ist wahrscheinlich am besten, sich an bash zu halten, einfach weil es am häufigsten als Shell verwendet wird und alle Tutorials oder Hilfen, die Sie von jemandem erhalten, höchstwahrscheinlich bash verwenden. Ich habe jedoch begonnen, zsh für alle meine Skripte zu verwenden, und ich habe festgestellt, dass es bash in Bezug auf das Scripting weit überlegen ist.

3
user34292

Verwenden Sie einfach keine Korn Shell (ksh).

Es sei denn, Sie haben perfektes Tippen und müssen niemals die Rücktaste drücken.

2
TM.

Ich mag ksh eigentlich. Es ist etwas konsistenter als bash, weil es nicht versucht, irgendwelche csh-Konstrukte zu unterstützen. tcsh ist meiner Erfahrung nach am wenigsten mit anderen Shells kompatibel, und ich vermeide es. Ich versuche, Skripte in sh zu schreiben, aber ksh hat einige Nice-Funktionen wie das Exportieren und das Setzen einer Variablen in einer Zeile. Ich versuche auch, die Kompatibilität mit bash aufrechtzuerhalten, da es voll funktionsfähig und üblich ist. Um tragbare Shell-Skripts zu schreiben, die wichtiger sind als die Auswahl der "besten" Shell, lesen Sie dieses Buch.

Portable Shell-Programmierung: Eine umfangreiche Sammlung von Bourne-Shell-Beispielen (HP Professional Series) von Bruce Blinn (Taschenbuch - 29. Oktober 1995) Amazon.com

1
Jason Catena

Versuchen Sie für Skripte eine Weile mit Bindestrich, um ein gutes Gefühl für das Tragbare zu bekommen. Wenn Sie jemals bash verwenden, um ein Shell-Skript zu schreiben, erklären Sie explizit bash in den Skripten Shebang.

Experimentieren Sie für Ihre persönliche Konsole mit dem, was sich draußen befindet. Finden Sie etwas, mit dem Sie sich wohl fühlen. Seien Sie exzentrisch und ärgern Sie alle Ihre sysadmin-Freunde, indem Sie eine Shell abholen, die für jede Maschine, auf der Sie sie verwenden möchten, aus dem Quellcode zusammengestellt werden muss.

1
Sam Rodgers

Ich benutze pdksh die ganze Zeit, ohne etwas perfektes Tippen zu haben. 

ksh ist der Standard, csh ist ein Standard und bash ist "Standard", jedoch nur für Linux. Ksh besser anvisieren.

1
james2vegas

Für das Schreiben von aktuellen Skripten ziehe ich ksh vor, das mehrere Erweiterungen enthält, die für die Programmierung und Korrekturen nützlich sind eine meiner Haustierstörungen

bash ist meine Präferenz für interaktive Sitzungen, aber das ist mehr eine Frage der persönlichen Vorlieben als alles andere. Stellen Sie nur sicher, dass es sich um eine Bourne-Shell handelt.

1
Jon Ericson

Ich kam auch aus csh, tcsh to bash. Es ist anders, aber nach einiger Zeit zumindest so schön wie die C-Shells.

Für das Scripting würde ich ksh empfehlen, da es auf den meisten Unixen (Solaris, HP-UX, OSF/1 (Die beste UNIX-Version aller Zeiten;) - für die Zeit) verfügbar ist und gute Funktionen bietet. Mit Korn können Sie die meisten Skripte programmieren. Sporadicaly möchten Sie mehr als eine Zahl erhalten, als Rückgabewert von einer Funktion, oder Sie haben einige Daten, die Sie nicht in ein einfaches Array schreiben können, oder Sie benötigen etwas, das bessere Möglichkeiten für Regegs bietet oder was auch immer dann würde ich Perl vorschlagen.

1
user224243

Ich denke, FISH ist das Beste, hat Syntax-Hervorhebung (für Befehle, die nicht existieren) und es kann automatisch ausgefüllt werden. Und es ist sehr leicht zu lernen.

0