Quale shell dovrei usare - tcsh vs bash? [chiuso]


30

Sto usando tcshda molto tempo ormai. Ma ogni volta che cerco qualcosa, trovo spesso che i metodi specificati siano bashspecifici. Anche la sintassi per gli script della shell è diversa per i due.

Da quello che ho sperimentato la ricerca e l'apprendimento su Internet, bashsembra essere la shell più comune utilizzata. Anche il numero di domande su questo sito taggate bashè molto più (cinque volte più attualmente) del numero di domande taggate tcsh.

Quindi, mi chiedo se dovrei passare a bash. Cosa pensi?

Perché dovrei attenermi a tcshO perché dovrei passare a bash?


3
Non credo di aver mai sentito parlare di qualcuno che passa a Bash; normalmente le persone usano bash perché è l'impostazione predefinita e poi passano a qualcosa di meglio :)
Michael Mrozek

6
@Michael: Beh, OS X è passato da tcsh a bash nella versione 10.3, quindi questo è un caso di persone che passano a bash.
sepp2k,

5
dovresti usare zsh(su cui OS X avrebbe dovuto passare)
xenoterracide

6
ma scrivi i tuoi script per dashquelli che dovrebbero funzionare praticamente su qualsiasi cosa.
xenoterracide,

2
Trovo in qualche modo divertente che tutti stiano suggerendo zsh. Allo stesso tempo non è divertente perché in realtà non risponde alla domanda operativa. ed è per questo che ho reso la mia risposta zsh un commento, non una risposta. Tuttavia, a meno che tu non abbia problemi a imparare a shell script tcsh, vai con quello che sai. Se hai problemi con l'uso, tcshpubblica qui il tuo problema. Non cambiare solo perché . Ci sono più messaggi bash perché è installato di default in più posti, questo non lo rende migliore.
xenoterracide,

Risposte:


22

Dopo aver appreso bash, trovo che tcsh sia un po 'un passo indietro. Ad esempio, quello che potrei facilmente fare in bash, trovo difficile farlo in tcsh. La mia domanda su tcsh . Anche il supporto e la documentazione su Internet sono molto migliori per bash e molto limitati per tcsh. Il numero di libri di O'Reilly su bash è eccezionale ma non ho trovato nulla di simile per tcsh.


26

In realtà, dovresti passare a zsh! È essenzialmente compatibile con le versioni precedenti e ha tutto l'utilità di bashcon un grande aiuto enorme di suggestione . C'è anche un libro (anche se non sono riuscito a leggerlo).

Devo ammettere un motivo per non usarlo zshpiù, bashma a meno che tu non lavori costantemente in più nuove installazioni, non si applica davvero. Soprattutto se conosci le differenze più significative . Questo, tuttavia, è molto simile alle differenze tra vime vi; non vuoi essere ingenuo ma praticamente non è un grosso problema. Anche gli vimutenti più esperti possono orientarsi emacse viceversa.


20

Dovresti passare a una shell conforme a POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , come uno di bash, ksh, dash, ma non zsh e certamente non tsh. È passato molto tempo da quando csh è stata dichiarata una cattiva scelta per gli script: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh non è molto diverso in quella zona.

Quando si scrivono script, assicurarsi di utilizzare solo le costruzioni POSIX (ovvero evitare bashismi e simili) se non si desidera essere bloccati di nuovo in qualcosa di non portatile.


7

La compatibilità ossessionata non ha ragione, penso. Se provi a rendere tutto compatibile posizionandoti #!/bin/shin alto e usando le estensioni .sh , ma non testerai mai altro che bash , non hai garantito uno script compatibile! Meglio usare solo #!/bin/bashe .bash in modo che gli utenti conoscano effettivamente il vero requisito.

Se conosci zsh , tcsh o qualcos'altro migliore di bash e hai un buon manuale di riferimento, non trattenerti . Proprio come le persone si aspettano di installare perl o python per poter eseguire alcuni script, possono anche gestire l'installazione della shell oscura! : D


1
In realtà non è /bin/shgarantito che indichi una shell compatibile con korn mentre tcsh è una shell derivata da csh. È probabile che /bin/shpunti già a bash o altra shell compatibile ed è quasi certo che non verrà influenzato dal cambio della shell dell'utente . csh e sh sono completamente incompatibili.
Maciej Piechotka,

1
Non sono sicuro di cosa sia garantito. So che ci sono molte persone che scrivono script per "/ bin / sh" che sono disseminati di Bash-ism che Bash-as- / bin / sh tollera, ma che confondono dash( ashshell compatibile di Debian e Bourne).
Kevin Cantu,

Un altro punto: #! / Bin / bash non vincolerà quale versione di Bash stavi usando e ci sono alcune incompatibilità da una versione all'altra, anche se la peggiore è stata introdotta molto tempo fa con v2. Non conosco incompatibilità tra le versioni in modalità compatibilità POSIX.
Charles Stewart,

Chiunque dovrebbe sentirsi libero di scrivere per qualunque shell voglia, e tu fai un punto valido riguardo al #!/bin/shsolo -nePOSIX. Tuttavia, preoccuparsi della compatibilità POSIX non dovrebbe essere il tipo di considerazione etichettato "ossessionato". Il richiamo delle shimpostazioni predefinite è in linea con debian / ubuntu e lo è da un po 'di tempo. So che non si qualificherebbe come "garantito", ma raramente considererei la portabilità "garantita". Sarei ancora più riservato con uno "script di shell".
JM Becker,

6

Quale shell? Scegli quello con il miglior rapporto "facilità d'uso" vs "seccature" ...

Se non riesci a trovare abbastanza esempi e spiegazioni generali per la tua shell "Maserati", le sue prestazioni extra potrebbero essere più un problema che un bonus ...

Ho trovato questo articolo / sito interessante; potrebbe valere la pena di leggere:
differenze di shell UNIX e come cambiare la shell


0

zsh probabilmente ha alcune somiglianze in più rispetto a tcsh rispetto a bash.

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

Le persone spesso affermano che zsh può fare cose che bash non può, ma non ho scoperto che sia così. Quello che ho visto è che per zsh è più facile, integrato o attivato per impostazione predefinita, mentre in bash è uno script aggiuntivo, deve essere attivato o è più difficile.

(disclaimer: sono un utente bash che a volte ha considerato di passare a zsh)


-3

Per alcuni motivi, ho usato tcsh, come l'ho usato più di 20 anni fa. Come so bash è originato da sh ma ovviamente con molte cose di csh ma tcsh è originato da csh. Mi piace molto il completamento del comando nei primi giorni, ma ora è disponibile nella maggior parte delle shell. Per lo script, dovremmo attenerci a / bin / sh?


6
Questo non tenta davvero di rispondere alla domanda. È più un commento.
slm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.