¿Por qué bash es el shell predeterminado en la mayoría de los sistemas operativos (Ubuntu, Fedora, OSX, etc.)? ¿Por qué muchos usuarios avanzados utilizan principalmente zsh? Si es tan bueno, ¿por qué no es el predeterminado?
Utilizo ambos No veo la diferencia porque todas mis tareas son simples :)
bash
default
zsh
history-of-ubuntu
Talal
fuente
fuente
ksh
, entonces también es cierto que la mayoría de las personas usa un shell diferente, y esto en sí mismo explicaría por quéksh
no es el shell predeterminado. Sin embargo, no creo que esa sea la razón, esperemos una respuesta asesina que estoy seguro de que esta pregunta recibirá.Respuestas:
Leí un poco sobre esto y la conclusión parece ser que es el shell predeterminado de GNU (utilizado por la mayoría de los sistemas operativos basados en Linux) y, por lo tanto, simplemente viene empaquetado como parte de GNU, mientras que también tiene 20 años de desarrollo detrás, lo que lo hace estable y bien redondeado, es simplemente el mejor todoterreno, que satisface las necesidades de todos los usuarios, excepto los más avanzados.
Para obtener más información, lea ¿Por qué bash es estándar en Linux? (La misma pregunta en Unix y Linux).
Solo para agregar un poco más a esto, hay muchos otros shells para probar, si está interesado, aquí hay algunos de esta respuesta :
fuente
El Bourne Shell ( sh back in the day) de la rama AT&T de Unix fue mejorado y reemplazado por el Korn Shell, ksh . ksh también salió de AT&T Bell Labs y no era GPL (la versión actual es Eclipse Public License). El C-shell, csh salió de la versión Berkeley de Unix y tampoco era GPL (licencia BSD) y también usaba una sintaxis diferente a la sh. El Z-shell, zsh es una mejora en sh pero no GPL (licencia tipo MIT). Bash fue una mejora en sh, usó la GPL y de GNU. Solo con licencia, Bash probablemente habría sido la opción para un sistema operativo GPL. Particularmente con un caparazón que es una parte central de una distribución.
Pero Bash también fue un proyecto GNU, lo que le dio, creo, un desarrollo más activo y facilitó las contribuciones que un producto heredado de Berkeley Unix o AT&T Unix. Un buen caso podría ser que zsh es y ha sido un shell mejor que Bash, pero no lo suficiente como para superar su licencia diferente y el estado del proyecto que no es GNU.
Cuando las distribuciones de Linux aparecieron por primera vez y eligieron su shell predeterminado (desde principios hasta mediados de los 90), no había github (2008) o incluso un SourceForge (1999). En ese momento, creo que los proyectos GNU tenían una ventaja real sobre los proyectos que no son GNU para hacerse notar y dibujar e incluir nuevos desarrolladores. Por lo tanto, las distribuciones podrían considerar a Z-shell como mejor, pero también esperar que Bash obtenga un buen soporte y mantenimiento en el futuro, y también tener más características agregadas, lo que le permitirá alcanzar zsh.
Ahora que Bash ha tenido años de estado predeterminado, se ha convertido en un estándar de facto, con libros escritos al respecto. Hay un libro que cubre tanto Bash como Z-shell , pero no hay un libro que lo cubra exclusivamente, mientras que hay varios que lo hacen para Bash.
Y en este punto, si las distribuciones cambiaran el valor predeterminado para las actualizaciones de un sistema existente, se romperían las configuraciones ya que algunos de los archivos de inicialización tienen nombres diferentes (por ejemplo .bashrc versus .zshrc) y el contenido de los archivos puede tener una sintaxis incompatible. Por lo tanto, serían muy reacios a hacer eso, dejando que las nuevas descargas tengan zsh como predeterminado y las actualizaciones tengan bash. Dos valores predeterminados diferentes para la misma distribución es algo que probablemente no quieren tener que apoyar y los usuarios / empresas tampoco quieren tratar.
fuente
Los lenguajes de shell de Unix son todos feos. Algunos en particular (
csh
), algunos tal vez un poco menos (ksh
? No lo sé en realidad), pero realmente cuando se trata de aspectos como la legibilidad y la rigidez para grandes proyectos, ninguno de ellos puede acercarse a lenguajes de propósito general bien diseñados como Python, C # o Haskell. Entonces, cuando quieras algo sólido, nunca elegirás ninguno de los sabores de concha.Los eliges cuando quieres hacer rápidamente cosas simples. Para esto, necesitas:
sh
la compatibilidad es una gran ventaja aquí, y una vez más, cuanto más popular, mejor.Como puede ver, la popularidad es un punto más importante en estos lenguajes de shell que en los lenguajes de uso general. Por lo tanto, incluso si
ksh
es un poco "mejor" como lenguaje en sí mismo, no hay realmente muchas ventajas en usarlo sibash
es un poco más popular (que era, en el sector relevante, ya que se eligió por primera vez como predeterminado para GNU).Las personas que hacen el cambio son deliberadas al respecto y tienen la experiencia suficiente para manejar fácilmente el cambio a su caparazón favorito. OTOH, un novato que se ve obligado a trabajar con un shell menos popular se confundirá rápidamente si le piden algo a Internet y no funciona. Por lo tanto, cualquier distribución que no solo esté dirigida a veteranos de Unix toma bastante riesgo si hace algo más que
bash
el estándar, un paso del que relativamente pocas personas se beneficiarían (y solo un poco).fuente
fuente
"Masa crítica" es la respuesta principal, OMI. Bash no es solo para el trabajo de línea de comandos, es para secuencias de comandos y hay una gran cantidad de secuencias de comandos Bash. No importa cuán mejor sea ahora una alternativa para la interacción, la necesidad de poder simplemente "enchufar y reproducir" esos scripts supera esas ventajas. Como tal, el único caparazón que puede eliminar a Bash de manera realista ahora es uno que es completamente compatible con versiones anteriores y el candidato más probable para eso es ... la próxima versión de Bash.
fuente