¿Cuál es la diferencia entre Bash, Zsh y otros shells de Linux?

¿Cuál es la diferencia entre Bash, Zsh y otros shells de Linux?

La mayoría de las distribuciones de Linux incluyen el shell bash de forma predeterminada, pero también puede cambiar a otro entorno de shell. Zsh es una alternativa particularmente popular, y hay otras conchas marinas, como ash, dash, fish y tcsh. Pero, ¿cuál es la diferencia y por qué hay tantas?

¿Qué hacen las conchas marinas?

Cuando inicia sesión en la línea de comandos o inicia una ventana de terminal en Linux, el sistema inicia el programa de shell. Los shells proporcionan una forma estándar de ampliar el entorno de la línea de comandos. Puede cambiar el shell predeterminado por otro, si lo desea.

El primer entorno de shell fue Thompson Shell, desarrollado por Bell Labs y lanzado en 1971. Desde entonces, los entornos de Shell se han basado en el concepto, agregando una variedad de nuevas características, funcionalidad y mejoras de velocidad.

Por ejemplo, Bash ofrece compleción de nombres de archivos y comandos, funciones avanzadas de secuencias de comandos, historial de comandos, colores configurables, alias de comandos y una variedad de otras funciones que no estaban disponibles en 1971 cuando se lanzó el primer shell.

Varios servicios del sistema también utilizan el shell en segundo plano. Las distribuciones de Linux incluyen muchas funciones escritas como scripts de shell. Estos scripts son comandos y otras funciones avanzadas de scripting de shell que se ejecutan en el entorno de shell.

Conchas que conducen a Bash: sh, csh, tsh y ksh

El antepasado más importante de los proyectiles modernos es el caparazón Bourne, también conocido como «sh», que lleva el nombre de su creador Stephen Bourne, quien trabajó en AT&T Bell Labs. Lanzado en 1979, se convirtió en el intérprete de comandos predeterminado en Unix debido a su soporte para sustitución de comandos, canalizaciones, variables, pruebas de condición y bucles, así como otras funciones. No ofrecía mucha personalización para los usuarios y no admitía sutilezas modernas como alias, finalización de comandos y funciones de shell (aunque esta última finalmente se agregó).

El shell C, o «csh», fue desarrollado a fines de la década de 1970 por Bill Joy en la Universidad de California en Berkley. Agregó muchos elementos interactivos con los que los usuarios podían controlar sus sistemas, como alias (atajos para comandos largos), capacidades de administración de tareas, historial de pedidos, etc. Se inspiró en el lenguaje de programación C, en el que se escribió el sistema operativo Unix. También significaba que los usuarios del shell Bourne tenían que aprender C para poder ingresar comandos en él. Además, csh tenía bastantes errores que los usuarios y creadores debían corregir durante un largo período de tiempo. La gente terminó usando el shell Bourne para la creación de scripts porque manejaba mejor los comandos no interactivos, pero se mantuvo fiel al shell C para el uso normal.

Con el tiempo, muchas personas corrigieron errores y agregaron funcionalidad al shell C, lo que resultó en una versión mejorada de csh conocida como «tcsh». Pero csh seguía siendo el predeterminado en las computadoras basadas en Unix y había agregado funciones no estándar. David Korn de Bell Labs trabajó en KornShell, o «ksh», que intentó mejorar la situación siendo compatible con versiones anteriores del lenguaje de shell Bourne pero agregando muchas características del shell csh. Fue lanzado en 1983, pero con una licencia propietaria. No fue software libre hasta la década de 2000, cuando se lanzó con varias licencias de código abierto.

El nacimiento de bash

La interfaz del sistema operativo portátil para Unix, o POSIX, fue otra respuesta a las frenéticas implementaciones de csh propietarias. Logró crear un estándar para interpretar comandos (entre otras cosas) y finalmente reflejó muchas características de KornShell. Al mismo tiempo, el Proyecto GNU intentaba crear un sistema operativo libre y compatible con Unix. El Proyecto GNU desarrolló un shell de software libre para ser parte de su sistema operativo libre y lo llamó «Bourne Again Shell» o «bash».

Bash se ha mejorado a lo largo de las décadas desde que se lanzó por primera vez en 1989, pero sigue siendo el shell predeterminado en la mayoría de las distribuciones de Linux en la actualidad. También es el shell predeterminado en macOS de Apple y está disponible para su instalación en Windows 10 de Microsoft.

Nuevos proyectiles: ash, dash, zsh y fish

A medida que la comunidad de Linux se instaló en Bash en los años siguientes, los desarrolladores siguieron creando nuevos shells cuando Bash salió por primera vez hace 28 años.

Kenneth Almquist creó un clon de caparazón de Bourne conocido como caparazón de Almquish, A Shell, «ash» o, a veces, simplemente «sh». también era compatible con POSIX y se convirtió en el shell predeterminado para BSD, una rama diferente de Unix. El ash shell es más liviano que bash, lo que lo hace popular en los sistemas Linux embebidos. Si tiene un teléfono Android rooteado con BusyBox instalado, o cualquier dispositivo con el paquete de software BusyBox, usa el código de ash.

Debian desarrolló un entorno de shell basado en ash y lo llamó «dash». Está diseñado para ser liviano y compatible con POSIX, por lo que es más rápido que Bash, pero no tendrá todas sus características. Ubuntu usa Dashboard Shell como el shell predeterminado para tareas no interactivas, acelerando los scripts de shell y otras tareas que se ejecutan en segundo plano. Sin embargo, Ubuntu todavía usa bash para shells interactivos, por lo que los usuarios aún tienen el entorno interactivo completo.

Uno de los shells nuevos más populares es el shell Z, o «zsh». Creado por Paul Falstad en 1990, zsh es un shell de estilo Bourne que contiene la funcionalidad que encontrará en bash y más. Por ejemplo, zsh tiene revisión ortográfica, la capacidad de monitorear inicios / cierres de sesión, algunas características de programación integradas como bytecode, soporte para notación científica en sintaxis, permite aritmética de punto flotante y más características.

Otro shell más nuevo es el Friendly Interactive Shell, o «fish», lanzado en 2005. Tiene una sintaxis de línea de comandos única que está diseñada para ser un poco más fácil de aprender, pero no se deriva del shell Bourne ni del shell C. Es una idea interesante, pero lo que aprenda usando fish no necesariamente lo ayudará a usar bash y otras conchas derivadas de Bourne.

¿Cuál deberías elegir? (y por qué Zsh es popular)

No es necesario que elija un caparazón. Su sistema operativo elige su shell predeterminado por usted, y esa elección casi siempre es bash. Siéntese frente a una distribución de Linux, o incluso una Mac, y casi siempre tendrá un entorno de shell bash. Bash tiene muchas características avanzadas, pero probablemente no las usará a menos que programe scripts de shell.

En sistemas Linux embebidos o sistemas BSD, terminará con el shell ash. Pero ash es un shell basado en Bourne y es ampliamente compatible con bash. Cualquier conocimiento que tenga sobre el uso de bash se transferirá al uso de un shell ash o dash, aunque algunas funciones avanzadas de scripting no están disponibles en este shell ligero.

Casi todos los shells con los que se encontrará están basados ​​en Bourne y funcionan igual, incluido zsh.

Es por eso que zsh es popular. Este nuevo estuche es compatible con bash, pero incluye más funciones. El shell zsh ofrece corrección ortográfica incorporada, finalización mejorada de la línea de comandos, módulos cargables que actúan como complementos para su shell, alias globales que le permiten asignar un alias a los nombres de archivo o lo que sea. ‘Other en la línea de comandos en lugar de solo comandos, y más soporte temático . Es como bash, pero con muchos extras, funciones adicionales y opciones configurables que puede disfrutar si pasa mucho tiempo en la línea de comandos.

Si está familiarizado con bash, puede cambiar a zsh sin aprender una sintaxis diferente, solo obtendrá funcionalidad adicional. Si está familiarizado con zsh, puede cambiar a bash sin aprender una sintaxis diferente, simplemente no tendrá acceso a estas funciones.

«Oh mi ZSH”Es una herramienta que te ayuda a activar más fácilmente los complementos de zsh y cambiar entre temas predefinidos, personalizando rápidamente tu shell de zsh sin pasar horas ajustando cosas.

También hay otras conchas marinas. Por ejemplo, el shell tcsh todavía existe y sigue siendo una opción. FreeBSD usa tsch como shell raíz predeterminado y ash como shell interactivo predeterminado. Si utiliza la programación en C con regularidad, tsch podría ser más adecuado para usted. Sin embargo, no es tan común como bash o zsh.

Cómo cambiar entre caparazones

Es fácil cambiar a un nuevo shell para probarlo. Simplemente instale el shell desde el administrador de paquetes de su distribución de Linux y escriba el comando para iniciar el shell.

Por ejemplo, digamos que quiere probar zsh en Ubuntu. Debe ejecutar los siguientes comandos para instalarlo y luego ejecutarlo:

sudo apt install zsh

zsh

Entonces estarías sentado frente a un caparazón zsh. Pegar » exit ”Al shell para salir de él y volver a su shell actual.

Es solo temporal. Siempre que abra una nueva ventana de terminal o inicie sesión en su sistema desde la línea de comandos, verá su shell predeterminado. Para cambiar el shell que ve cuando inicia sesión, llamado shell de inicio de sesión, normalmente puede usar el chsh , o «Cambiar Shell», comando.

Para usar este comando, primero debe encontrar la ruta completa a su shell con el comando which. Por ejemplo, digamos que queremos cambiar al shell zsh. Ejecutaríamos el siguiente comando:

which zsh

En Ubuntu, esto nos dice que el binario zsh está almacenado en / usr / bin / zsh.

Ejecute el siguiente comando, ingrese su contraseña y se le pedirá que elija un nuevo shell de inicio de sesión:

chsh

Según el comando anterior, ingresaríamos /usr/bin/zsh . El shell zsh sería entonces nuestro predeterminado hasta que ejecutamos el chsh orden y lo cambió de nuevo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Experto Geek - Tu Guía en Tendencias Tecnológicas