¿Qué shell debo usar - tcsh vs bash? [cerrado]

30

He estado usando tcshdurante mucho tiempo ahora. Pero cada vez que busco algo, a menudo encuentro que los métodos especificados son bashespecíficos. Incluso la sintaxis para los scripts de shell es diferente para los dos.

Por lo que he experimentado buscando y aprendiendo en Internet, bashparece ser el shell más común utilizado. Incluso el número de preguntas en este sitio etiquetado bashes mucho más (cinco veces más actualmente) que el número de preguntas etiquetadas tcsh.

Entonces, me pregunto si debería cambiar a bash. ¿Qué piensas?

¿Por qué debería apegarme tcshO por qué debería mudarme bash?

Lazer
fuente
3
No creo haber oído hablar de alguien que cambie a bash; normalmente la gente usa bash porque es el valor predeterminado y luego cambia a algo mejor :)
Michael Mrozek
66
@Michael: Bueno, OS X cambió de tcsh a bash en la versión 10.3, así que ese es un caso de personas que cambian a bash.
sepp2k
55
deberías usar zsh(a qué OS X debería haber cambiado)
xenoterracide
66
pero escriba sus scripts para que dashdeberían funcionar en casi cualquier cosa.
xenoterracide
2
Me resulta algo divertido que todo el mundo sugiera zsh. Al mismo tiempo, no es divertido porque realmente no responde la pregunta de operaciones. Es por eso que hice mi respuesta zsh un comentario, no una respuesta. Sin embargo, a menos que tenga problemas para aprender a ejecutar el script tcsh, vaya con lo que sabe. Si tiene problemas para usar, tcshpublique su problema aquí. No cambies solo porque . Hay más publicaciones de bash porque está instalado de forma predeterminada en más lugares, eso no lo mejora.
xenoterracide

Respuestas:

22

Después de aprender bash, encuentro que tcsh es un poco un paso atrás. Por ejemplo, lo que podría hacer fácilmente en bash me resulta difícil hacerlo en tcsh. Mi pregunta sobre tcsh . El soporte y la documentación de Internet también son mucho mejores para bash y muy limitados para tcsh. La cantidad de libros de O'Reilly sobre bash es excelente, pero no he encontrado nada similar para tcsh.

Andrew Stern
fuente
26

En realidad, deberías mudarte a zsh! Es esencialmente compatible con versiones anteriores y tiene toda la utilidad de bashuna gran ayuda increíble . Incluso hay un libro (aunque no he podido leerlo).

Admitiré una razón para no usar zshmás, bashpero a menos que trabajes constantemente en varias instalaciones nuevas, realmente no se aplica. Especialmente si conoces las diferencias más significativas . Sin embargo, esto es realmente similar a las diferencias entre vimy vi; no quieres ser ingenuo pero prácticamente no es gran cosa. Incluso los vimusuarios hardcore pueden orientarse emacsy viceversa.

revs gvkv
fuente
20

Debería cambiar a un shell compatible con POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , como uno de bash, ksh, dash, pero no zsh y ciertamente no tcsh. Ha pasado mucho tiempo desde que csh fue declarado una mala elección para las secuencias de comandos: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh no es muy diferente en esa área.

Al escribir scripts, asegúrese de usar construcciones de POSIX solamente (es decir, evite los bashismos y los me gusta) si no desea estar bloqueado nuevamente en algo no portátil.

revs jlliagre
fuente
7

La compatibilidad obsesionada está perdiendo el punto, creo. Si intenta hacer que todo sea compatible colocando #!/bin/shen la parte superior y usando extensiones .sh , pero nunca prueba en nada más que bash , ¡no ha garantizado un script compatible! Es mejor usar #!/bin/bashy .bash para que los usuarios realmente conozcan el requisito real.

Si conoce zsh , tcsh u otra cosa mejor que bash , y tiene un buen manual de referencia, no se contenga . Al igual que las personas esperan instalar perl o python para poder ejecutar algunos scripts, ¡también pueden manejar la instalación de su oscuro shell! :RE

Kevin Cantu
fuente
1
En realidad, no se /bin/shgarantiza que apunte a un shell compatible con korn mientras que tcsh es un shell derivado de csh. Es probable que /bin/shya apunte a bash u otro shell compatible y es casi seguro que no se verá afectado por el cambio del shell del usuario . csh y sh son completamente incompatibles.
Maciej Piechotka
1
No estoy seguro de lo que está garantizado. Sé que hay muchas personas que escriben scripts para "/ bin / sh" que están llenos de Bash-isms que Bash-as- / bin / sh tolera, pero que confunden dash( ashshell compatible con Debian y Bourne).
Kevin Cantu
Otro punto: #! / Bin / bash no restringirá qué versión de Bash estaba usando y hay algunas incompatibilidades de una versión a otra, aunque las peores se introdujeron hace mucho tiempo con v2. No conozco ninguna incompatibilidad entre versiones en modo de compatibilidad POSIX.
Charles Stewart
Cualquier persona debe sentirse libre de escribir para cualquier shell que quiera, y usted hace un punto válido con respecto a POSIX #!/bin/shsolo -ne. Sin embargo, preocuparse por la compatibilidad POSIX no debería ser el tipo de consideración etiquetada como 'obsesionada'. Invocar shguión predeterminado con debian / ubuntu, y lo ha hecho por un tiempo. Sé que eso no calificaría como 'garantizado', pero rara vez consideraría algo de portabilidad 'garantizado'. Estaría aún más reservado con un 'script de shell'.
JM Becker
6

Cual caparazón? Elija el que tenga la mejor relación "facilidad de uso" frente a "problemas" ...

Si no puede encontrar suficientes ejemplos generales y explicaciones para su caparazón "Maserati", entonces su rendimiento adicional puede ser más un problema que una bonificación ...

Encontré este artículo / sitio interesante; Puede valer la pena leer:
las diferencias de shell de UNIX y cómo cambiar su shell

Peter.O
fuente
0

zsh probablemente tiene algunas similitudes más con tcsh que bash.

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

La gente a menudo afirma que zsh puede hacer cosas que bash no puede hacer, pero no he encontrado que ese sea el caso. Lo que he visto es que para zsh es más fácil, integrado o activado de forma predeterminada, mientras que en bash es un script adicional, tiene que estar activado o es más difícil.

(descargo de responsabilidad: soy un usuario bash que a veces ha considerado cambiar a zsh)

KellyClowers
fuente
-3

Por algún tipo de razones, solía tcsh, como lo usaba hace 20 años. Como sé, bash se originó a partir de sh pero, por supuesto, con muchas cosas de csh, pero tcsh se originó a partir de csh. Realmente me gusta la finalización del comando en los primeros días, pero ahora está disponible en la mayoría de los shells. Para las secuencias de comandos, ¿nos quedaremos con / bin / sh?

David
fuente
66
Esto realmente no intenta responder la pregunta. Es más un comentario.
slm