Welche Shell soll ich verwenden - tcsh vs bash? [geschlossen]

30

Ich benutze tcshseit langer Zeit. Aber wenn ich nach etwas suche, stelle ich oft fest, dass die angegebenen Methoden bashspezifisch sind. Sogar die Syntax für die Shell-Skripte unterscheidet sich für beide.

Nach dem, was ich beim Suchen und Lernen im Internet erlebt habe, bashscheint die am häufigsten verwendete Shell zu sein. Selbst die Anzahl der Fragen auf dieser Site ist um ein bashVielfaches höher (derzeit fünfmal höher) als die Anzahl der Fragen, die mit Tags versehen sind tcsh.

Also überlege ich, ob ich auf bash umsteigen soll. Was denkst du?

Warum soll ich bleiben tcshODER warum soll ich umziehen bash?

langsamer
quelle
3
Ich glaube nicht, dass ich jemals von jemandem gehört habe, der zu Bash gewechselt ist. Normalerweise verwenden die Leute bash, weil es die Standardeinstellung ist, und wechseln dann zu etwas Besserem :)
Michael Mrozek
6
@Michael: Nun, OS X ist in Version 10.3 von tcsh auf bash umgestiegen, das ist also ein Fall, in dem Leute auf bash umsteigen.
SEPP2K
5
Sie sollten verwenden zsh(welches OS X hätte
wechseln
6
Aber schreiben Sie Ihre Skripte, für dashdie fast alles funktionieren sollte.
Xenoterracide
2
Ich finde es etwas amüsant, dass alle vorschlagen zsh. Zur gleichen Zeit ist es nicht amüsant, weil es die ops-Frage nicht wirklich beantwortet. Aus diesem Grund habe ich in meiner Antwort auf zsh einen Kommentar gemacht, keine Antwort. Wenn Sie nicht Probleme haben, das Shell-Skript tcsh zu erlernen, sollten Sie sich an Ihre Kenntnisse halten. Wenn Sie Probleme bei der Verwendung haben, tcshposten Sie Ihr Problem hier. Wechseln Sie nicht nur , weil . Es gibt mehr Bash-Posts, weil es standardmäßig an mehr Orten installiert ist, was es nicht besser macht.
Xenoterracide

Antworten:

22

Nachdem ich bash gelernt habe, finde ich, dass tcsh ein kleiner Rückschritt ist. Zum Beispiel finde ich es schwierig in tcsh zu tun, was ich in bash leicht tun könnte. Meine Frage zu tcsh . Die Internetunterstützung und Dokumentation ist auch für Bash viel besser und für TCSH sehr begrenzt. Die Anzahl der O'Reilly-Bücher über Bash ist großartig, aber ich habe nichts Ähnliches für tcsh gefunden.

Andrew Stern
quelle
26

Eigentlich solltest du umziehen zsh! Es ist im Wesentlichen abwärtskompatibel und bashmit einer großen Portion Awesomeness von großem Nutzen . Es gibt sogar ein Buch (obwohl ich es noch nicht gelesen habe).

Ich will zugeben , einen Grund , nicht zu verwenden , zshüber bashaber wenn man ständig an mehreren neuen Anlagen arbeiten ist es nicht wirklich anwenden. Vor allem, wenn Sie die wichtigsten Unterschiede kennen . Dies ist jedoch den Unterschieden zwischen vimund sehr ähnlich vi. du willst nicht naiv sein, aber praktisch ist es keine große Sache. Auch Hardcore- vimUser können sich zurechtfinden emacsund umgekehrt.

gvkv
quelle
20

Sie sollten zu einer POSIX-kompatiblen Shell wechseln ( http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html) , z. B. bash, ksh, dash, aber nicht zsh und schon gar nicht tcsh. Es ist lange her, dass csh als schlechte Wahl für Skripte eingestuft wurde: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh ist in diesem Bereich nicht viel anders.

Stellen Sie beim Schreiben von Skripten sicher, dass Sie nur POSIX-Konstruktionen verwenden (dh Bashismen und dergleichen vermeiden), wenn Sie nicht erneut in etwas nicht portierbarem gesperrt werden möchten.

U / min
quelle
7

Der Kompatibilitätsbesessenheit fehlt meiner Meinung nach der Sinn. Wenn Sie versuchen, alles kompatibel zu machen, indem Sie es #!/bin/shoben platzieren und die .sh- Erweiterungen verwenden, aber niemals etwas anderes als bash testen , können Sie kein kompatibles Skript garantieren! Besser nur Gebrauch #!/bin/bashund .bash so dass die Nutzer tatsächlich die reale Anforderung kennen.

Wenn Sie zsh , tcsh oder etwas anderes besseres als bash kennen und ein gutes Referenzhandbuch dafür haben, halten Sie sich nicht zurück . Genau wie die Leute erwarten, Perl oder Python zu installieren , um einige Skripte ausführen zu können, können sie auch Ihre obskure Shell installieren! : D

Kevin Cantu
quelle
1
Tatsächlich wird nicht /bin/shgarantiert, dass es auf eine kornkompatible Shell verweist, während tcsh eine von csh abgeleitete Shell ist. Es ist wahrscheinlich, dass /bin/shbereits auf bash oder eine andere kompatible Shell verwiesen wird, und es ist fast sicher, dass dies durch das Ändern der Benutzer- Shell nicht beeinträchtigt wird . csh und sh sind völlig inkompatibel.
Maciej Piechotka
1
Ich bin nicht sicher, was garantiert ist. Ich weiß, dass es viele Leute gibt, die Skripte für "/ bin / sh" schreiben, die mit Bash-Ismen übersät sind, die Bash-as- / bin / sh toleriert, aber verwirren dash(Debian- ashund Bourne-kompatible Shell).
Kevin Cantu
Ein weiterer Punkt: #! / Bin / bash wird nicht einschränken, welche Version von Bash Sie verwendet haben, und es gibt einige Inkompatibilitäten von einer Version zur anderen, obwohl die schlimmsten vor langer Zeit mit v2 eingeführt wurden. Ich kenne keine Inkompatibilitäten zwischen Versionen im POSIX-Kompatibilitätsmodus.
Charles Stewart
Jeder sollte sich frei fühlen, für jede beliebige Shell zu schreiben, und Sie machen einen gültigen Punkt in Bezug auf POSIX #!/bin/shallein -ne. Bedenken hinsichtlich der POSIX-Kompatibilität sollten jedoch nicht als „besessen“ bezeichnet werden. Das Aufrufen von shDefaults erfolgt seit einiger Zeit mit debian / ubuntu. Ich weiß, dass dies nicht als "garantiert" gelten würde, aber selten würde ich eine Portabilität als "garantiert" betrachten. Ich wäre mit einem "Shell-Skript" noch reservierter.
JM Becker
6

Welche Muschel? Entscheiden Sie sich für diejenige mit dem besten Verhältnis von "Benutzerfreundlichkeit" zu "Ärger" ...

Wenn Sie nicht genügend allgemeine Beispiele und Erklärungen für Ihre "Maserati" -Shell finden, ist die zusätzliche Leistung möglicherweise eher ein Problem als ein Bonus ...

Ich fand diesen Artikel / diese Seite interessant; Vielleicht ist es eine Lektüre wert:
Unterschiede in der UNIX-Shell und wie man die Shell ändert

Peter.O
quelle
0

zsh hat wahrscheinlich ein paar Ähnlichkeiten mit tcsh als bash.

Siehe: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

Die Leute behaupten oft, dass zsh Dinge kann, die bash nicht kann, aber ich habe nicht herausgefunden, dass dies der Fall ist. Was ich habe ist zu sehen , dass für zsh es einfacher ist , eingebaut oder auf standardmäßig aktiviert, während in bash es ein Addon Skript ist, muss eingeschaltet werden, oder ist schwieriger.

(Haftungsausschluss: Ich bin ein Bash-Benutzer, der manchmal in Betracht gezogen hat, zu zsh zu wechseln.)

KellyClowers
quelle
-3

Aus irgendwelchen Gründen habe ich früher tcsh verwendet, als ich es vor 20 Jahren verwendet habe. Wie ich weiß, stammt bash von sh, aber natürlich mit viel csh-Zeug, aber tcsh stammt von csh. Ich mag die Befehlserfüllung in den frühen Tagen sehr, aber sie ist jetzt in den meisten Shells verfügbar. Sollen wir uns für die Skripterstellung an / bin / sh halten?

David
quelle
6
Dies versucht nicht wirklich, die Frage zu beantworten. Es ist eher ein Kommentar.
slm