lista - ¿Qué shell de Linux debería usar?
lista completa de comandos linux pdf (19)
He usado bash, csh y tcsh. Pero hice esta pregunta y Jonathan me informó que no se debe confiar en csh. Entonces, ¿qué shell de Linux es bueno para el desarrollo? ¿y por qué?
El problema con csh es que es una mierda para scripts, como se explica aquí . No hay una razón real por la que no deba usarlo como un shell interactivo, pero la mayoría de las personas lo encuentran confuso al tener que aprender dos shells diferentes y no poder probar partes de sus scripts en la línea de comando, por lo que es más fácil usar lo mismo para todo.
Los candidatos obvios para un shell interactivo son bash, dash, zsh y {pd,} ksh. Todos estos implementan el estándar de shell posix, con algunas extensiones menores. Elige lo que quieras para el uso interactivo, yo tendería a ir con bash solo porque es el estándar en Linux, pero todos tienen sus méritos y zsh en particular parece popular.
Si está escribiendo una secuencia de comandos que pretende ser portátil, use #! / Bin / sh y asegúrese de utilizar la sintaxis estándar de shell posix. Si funciona tanto en bash como en ksh, probablemente sea estándar. Hay algunas versiones antiguas de Unix que tienen un bin / sh no estándar, pero no me molestaría con eso a menos que sepas que tienes que hacerlo. Más de un problema para la portabilidad son todas las herramientas de línea de comandos que llamas desde tu script.
Intento. Es estándar.
Me gusta ksh en realidad. Es un poco más consistente que bash porque no intenta soportar ningún constructo csh. tcsh, en mi experiencia, es menos compatible con otras conchas, y lo evito. Intento escribir scripts en sh, pero ksh tiene algunas características interesantes, como exportar y establecer una variable en una línea. Trato de mantener la compatibilidad con bash también, ya que tiene todas las funciones y es común. Para escribir scripts de shell portátiles, que es más importante que seleccionar el "mejor" shell, puede consultar este libro.
Programación portátil de shell: una amplia colección de ejemplos de Bourne Shell (HP Professional Series) por Bruce Blinn (Paperback - 29 de octubre de 1995) amazon.com
Para la interactividad, use Zsh. Durante un tiempo fui el responsable del mantenimiento del puerto FreeBSD de los scripts de finalización de pestañas de Bash, pero lo abandoné tan pronto como probé Zsh por primera vez. Puede hacer todo lo que Bash puede hacer, pero con más facilidad y elegancia. También tiene la agradable propiedad de tener pulsaciones de teclado extremadamente parecidas a las de Bash, por lo que si estás en un sistema sin Zsh, podrás arreglárselas (incluso si no se "siente" tan bien).
Para crear scripts, use Bourne Shell (sh). Es el lenguaje de scripting estándar POSIX y sus scripts están garantizados para funcionar en todas partes. Bash, Zsh y otras conchas tienen buenas extensiones que te perderás, pero que te atan a una configuración específica. Ignore ese consejo para las secuencias de comandos de uso personal que está seguro de que nunca ejecutará en otro lugar, pero recuerde que es una verdadera solución de compromiso que debe tener en cuenta.
Pero en resumen, Zsh. No conozco a nadie que lo haya probado que no haya cambiado de forma inmediata y permanente. Es realmente así de bueno.
Simplemente no use Korn Shell (ksh).
A menos que tenga una escritura perfecta y nunca necesite usar la tecla de retroceso.
Uso pdksh todo el tiempo sin tener nada cerca de escribir a la perfección (¿quizás necesites arreglar tu termcap?).
ksh es el estándar, csh es un estándar y bash es ''estándar'', pero solo en Linux. Es mejor apuntar a ksh.
Usualmente me quedo con bash, porque es más amigable que straight-up sh, y es el predeterminado en cada distribución que he usado semi-regularmente (SuSE, RHEL, Ubuntu, Slackware).
Sin embargo, si planea escribir scripts de shell portátiles, asegúrese de que todos se ejecuten en sh real .
Yo prefiero zsh.
La finalización de pestañas solo lo vale:
- Se expande comodines si lo desea (útil cuando desea eliminar todos menos un archivo en un directorio)
- Le dará una lista de interruptores después de especificar un programa
- Otorga opciones de finalización de tabulación debajo de la línea en la que está trabajando, lo cual es bastante útil.
No soy un gran usuario de Ruby, pero http://rush.heroku.com/ parece interesante
Probablemente sea mejor seguir con bash simplemente porque es el más utilizado como caparazón y cualquier tutorial o ayuda que pueda recibir de alguien probablemente usará bash. Sin embargo, he comenzado a usar zsh para todos mis scripts y he encontrado que es muy superior a bash en términos de scripting.
Como creo que soy la persona que sugirió que debe usar algo más que C Shell, tal vez debería calificar mis comentarios ligeramente, y luego apoyar a aquellos que dijeron ''bash on Linux, Korn shell en otras plataformas (a menos que bash esté instalado) ahí también)''.
Al igual que los editores (¿prefieres vim
o emacs
), La elección del shell es en parte una cuestión de familiaridad y, en parte, una cuestión de preferencia. Hay muchos a los que les gusta C shell, aunque creo que es menos fácil de programar que Bourne shell y derivados. Lo que tengo en mi .cshrc es, de hecho, equivalente a exec /bin/ksh
(no es idéntico porque quiero ejecutar un shell de inicio de sesión - uno que lea el perfil, etc.), pero no condenaría cualquiera por usar C shell o un derivado si es una decisión informada.
Si decides que quieres usar algo que no sea C shell, entonces estás básicamente en el campo de shell Bourne, para el cual el estándar POSIX especifica más o menos el comportamiento esperado y luego los diferentes shells, es decir, el Bourne, Korn. o las conchas Born Again - agregue (o, en el caso del shell Bourne clásico, reste) algunas características. Si su código alguna vez necesita moverse de Linux a HP-UX, Solaris o AIX (el trío sobreviviente de las variantes de Unix derivadas de AT & T), entonces debería asegurarse de escribir sus scripts de shell en el clásico shell de Bourne, aunque Korn shell también es bastante seguro. Sin embargo, tenga en cuenta que en Linux puede escribir #!/bin/sh
y obtener Bash, en las otras plataformas, obtendrá el shell Bourne.
Cambio entre el shell Korn y Bash sin mayores problemas, y rara vez con problemas menores. Tiendo a estar lejos de esos rincones de cualquiera de los dos idiomas que no están bien definidos, lo que tiende a significar "definido en ambos". Otro problema para los que usan Linux es que las herramientas GNU tienen más opciones que las versiones clásicas de Unix, y puede perder la portabilidad no debido a las construcciones de programación del shell que utiliza sino por las opciones de comando que utiliza. La experiencia y el acceso fácil a las páginas de manual de otros sistemas ayudan enormemente.
También vine de csh, tcsh a bash. Es diferente, pero después de un tiempo, al menos tan agradable como las c-shells.
Para Scripting recomendaría ksh, porque está disponible en la mayoría de Unixes (Solaris, HP-UX, OSF / 1 (el mejor UNIX de todos los tiempos;) - porque es el momento) y tiene buenas características. Con Korn puedes programar la mayoría de los scripts. Esporádicamente, le gustaría obtener más de un número, como valor de retorno de una función, o tiene algunos datos que no puede poner en una matriz simple, o necesita algo que tenga mejores capacidades en caso de regegs, o lo que sea, entonces propondría Perl.
Para la creación de scripts, intente utilizar dash por un tiempo para tener una buena idea de lo que es portátil. Si alguna vez usa bash para escribir un script de shell, declare explícitamente bash en los scripts shebang.
Para su uso personal de la consola, experimente con lo que hay ahí fuera. Encuentre algo con lo que se sienta cómodo. Sea excéntrico y moleste a todos sus amigos de administrador de sistemas al seleccionar un shell que debe compilarse desde el origen para cada máquina que desee utilizar.
Nadie mencionó el estándar basado en Debian para sh
, es el dash
shell Debian Almquist. Es completamente compatible con POSIX y tiene un arranque muy rápido, por lo que Debian / Ubuntu lo usa para /bin/sh
.
Así que utilizo bash
para mi caparazón interactivo, pero solo dash
para scripting. De esa forma sé que mis scripts son al menos compatibles con POSIX y se ejecutarán en cualquier otro shell POSIX. ... Sé que la portabilidad es más que el caparazón, pero es donde trazo la línea.
El shell más común, con diferencia, en Linux es bash. A menos que tenga una buena razón para usar una alternativa, le sugiero que se quede con bash, o con el shell utilizado más comúnmente por su equipo de proyecto (o con la mayoría de los scripts de shell con los que tiene que trabajar).
El único otro contendiente muy común es el dash, que cada vez es más utilizado por el proyecto Ubuntu.
Esta es realmente una preferencia personal, bueno, excepto por csh .
Fish (Friendly Interactive Shell) es una buena alternativa a la mayoría de las otras conchas. Tiene una sintaxis consistente, una buena terminación de pestañas y resaltado de sintaxis, es fácil de usar y de recuperar (especialmente si no tiene hábitos de otras shells), y tiene una excelente ayuda en el tiempo de ejecución.
Lo malo es que está erráticamente desarrollado, tiene una base de usuarios pequeña (pero útil) y es muy diferente a otros proyectiles. La compatibilidad con versiones anteriores de shell modismos no era una prioridad.
En muchos casos, esto es bueno ... muchas de las conchas estándar tienen formas realmente estúpidas de hacer las cosas, simplemente porque siempre se ha hecho de esa manera. "do / done", "case / esac", "if / fi"? Esta es la locura que los peces eliminan.
Vale la pena echarle un vistazo.
Seleccione uno: a. tcsh b. ksh c. zsh d. inicio de sesión e. intento
Yo usaría el inicio de sesión. Sólo digo.
Creo que FISH es el mejor, tiene resaltado de sintaxis (para comandos que no existen) y puede autocompletarse. Y es muy fácil de aprender.
Para escribir guiones reales, prefiero ksh
, que tiene varias extensiones útiles para la programación y corrige una de las molestias de mi mascota .
bash
es mi preferencia por las sesiones interactivas, pero eso es más una cuestión de preferencia personal que otra cosa. Solo asegúrate de que sea un shell tipo Bourne.