Las distribuciones de Linux más recientes incluyen bash como shell predeterminado, aunque hay otros, (posiblemente) mejores shells disponibles.
Estoy tratando de entender si se trata de algunas sobras históricas que nadie quiere cambiar, o hay algunas buenas razones por las que bash sea la primera opción?
/bin/sh
, que es el shell predeterminado en UNIX-es 'normal' ...bash
es el mejor shell porque lo conozco bien y está en todas partes, hace todo lo que necesito de manera concisa y relativamente fácil, es fácil de leer y las personas pueden entenderlo sin saber cómo crear scripts de bash. ¿Qué más quieres de un caparazón? Si desea muchas funciones de programación, está utilizando un shell incorrectamente.Respuestas:
La respuesta corta es porque Linux es realmente GNU / Linux. Solo el kernel es Linux, pero la colección base de utilidades que proporciona el entorno similar a Unix es proporcionada por GNU y el shell de GNU es bash.
Como dije, esa es la respuesta corta;)
editado para agregar algunos comentarios adicionales ...
Permítanme prefijar diciendo que no soy un historiador de Unix, por lo que solo puedo responder en mi humilde opinión
Algunos puntos, en primer lugar, bash es el fregadero de conchas de la cocina, como emacs es para los editores.
En el momento en que se lanzó bash, no había implementaciones de ksh gratuitas, tcsh era un reemplazo de csh gratuito, pero Stallman tenía una queja contra csh para la programación de shell.
Como shell interactivo, la recuperación de comandos / historial fue excelente, junto con el almacenamiento del historial de una sesión a otra. Fue una caída en el reemplazo de sh, bsh, ksh para la programación de shell y fue un shell interactivo decente.
Como una bola de nieve rodando cuesta abajo, bash ha ganado impulso y tamaño.
Sí, hay docenas de otras conchas; los proyectiles que se adaptan mejor a un propósito o gusto individual, pero para un solo uso general, el bash bash hace un trabajo decente y ha tenido muchos ojos en él durante más de 20 años.
fuente
Bash tiene algunos competidores potenciales:
/bin/sh
. Ash (con lo que me refiero a cualquiera de la familia de conchas sueltas llamada ash) está diseñado para ser pequeño y rápido, sin características interactivas (es solo para editar guiones). El avivamiento de las cenizas es relativamente reciente; En la década de 1990, las variantes existentes carecían de muchas características.Además, bash es el shell oficial de GNU , y los sistemas Linux son realmente GNU / Linux : muchos de los programas principales provienen de GNU, incluso si la parte más conocida, el kernel de Linux, no lo es. En el momento en que se convirtió en el estándar de facto, bash era conocido, tenía un estado oficial y tenía un conjunto de características decente.
fuente
/bin/sh
otras, envían cenizas. Por ejemplo, Ubuntu/bin/sh
ha sidodash
(el tenedor de cenizas mantenido por Debian) por un tiempo. Bash tiene más características, la ceniza es más pequeña y más rápida. Ambos son compatibles con POSIX (o al menos lo suficientemente compatibles en la práctica).¿La respuesta más simple? Porque algo "tiene que ser" el valor predeterminado. El valor predeterminado más sensible es aquel con el que la mayoría de los usuarios ya se sienten cómodos. En ese punto, Bash es una buena opción. Todos tienen la libertad de elegir cuál es el mejor en su mundo. La mayoría elegirá usar el predeterminado si siempre ha hecho lo que necesita.
fuente
Viniendo de DOS (con doskey instalado) Realmente perdí la función de recuperar los últimos comandos simplemente moviendo el cursor hacia arriba / abajo. BASH fue IMO, el primer shell que implementó esto en * nix.
Entonces, probablemente a la mayoría de los chicos de esa generación en adelante les gustaba bash.
fuente
tcsh
era el primer shell * nix que usaba las teclas de flecha para navegar de un lado a otro a través del historial del shell.Todas las otras respuestas son geniales, pero desde un punto de vista práctico: si me siento frente a un sistema desconocido (o accedo de forma remota) y necesito hacer algo, puedo contar con que bash esté disponible en todos los sistemas excepto en los más antiguos. Puedo seguir adelante y hacer las cosas.
Como se señaló en otras respuestas y en su pregunta, hay muchos otros shells (escucho muchas cosas buenas sobre zsh, pero no lo he probado), pero varían con respecto a la sintaxis y, a veces, los comandos utilizados para hacer las cosas. Si solo quiero hacer algo, bash es bastante complicado sin tener que adaptarme a otro shell.
Además, cuando escribo un script de shell que generalmente puede ser útil, lo escribo para bash y sé que si tengo mucho cuidado de no hacer cosas dependientes del sistema, se ejecutará en casi cualquier lugar.
fuente
Inercia.
Bash resultó ser el shell gratuito más fácilmente disponible cuando los sistemas Linux (GNU / Linux, si lo prefiere) comenzaron a aparecer. El hecho de que sea del proyecto GNU no hizo daño.
En cuanto a por qué sigue siendo el shell predeterminado, nunca ha habido una razón suficiente para cambiarlo. Incluso si algún otro shell es mejor, hay ventajas de tener el mismo shell de inicio de sesión predeterminado en diferentes distribuciones, y sería difícil lograr que todos (Debian, Red Hat, Suse, etc.) acuerden cambiar a otra cosa.
Y después de todo, es solo un valor predeterminado. Cualquier usuario puede usar
chsh
para cambiar su shell de inicio de sesión. No hay necesidad de cambiar el valor predeterminado para todos.fuente