22Jul
La mayoría de las distribuciones de Linux incluyen el shell bash de forma predeterminada, pero también se puede cambiar a otro entorno de shell. Zsh es una alternativa particularmente popular, y hay otras conchas, como cenizas, guiones, peces y tcsh.¿Pero cuál es la diferencia, y por qué hay tantos?
¿Qué hacen las conchas?
Cuando inicia sesión en la línea de comando o inicia una ventana de terminal en Linux, el sistema inicia el programa de shell. Las shells ofrecen una forma estándar de extender el entorno de línea de comando. Puede cambiar el shell predeterminado por otro, si lo desea.
El primer entorno de shell fue Thompson Shell, desarrollado en Bell Labs y lanzado en 1971. Los entornos de Shell han estado construyendo sobre el concepto desde entonces, agregando una variedad de nuevas características, funcionalidad y mejoras de velocidad.
Por ejemplo, Bash ofrece terminación de nombre de archivo y comando, funciones avanzadas de scripting, un historial de comandos, colores configurables, alias de comando y una variedad de otras características que no estaban disponibles en 1971 cuando se lanzó el primer shell.
El shell también se usa en segundo plano por varios servicios del sistema. Las distribuciones de Linux incluyen muchas funciones escritas como scripts de shell. Estos scripts son comandos y otras funciones avanzadas de scripts de shell que se ejecutan a través del entorno de shell.
Shells Leading to Bash: sh, csh, tsh y ksh
El progenitor más destacado de las conchas modernas es el shell Bourne, también conocido como "sh", que recibió su nombre de su creador Stephen Bourne que trabajó en AT & T's Bell. Labs. Lanzado en 1979, se convirtió en el intérprete de comandos predeterminado en Unix debido a su compatibilidad con sustitución de comandos, tuberías, variables, prueba de condición y bucle, junto con otras características. No ofrecía mucha personalización para los usuarios y no era compatible con las sutilezas modernas como los alias, la finalización de comandos y las funciones de shell( aunque finalmente se agregó esta última).
El shell C, o "csh", fue desarrollado a finales de la década de 1970 por Bill Joy en la Universidad de California, Berkley. Agregó una gran cantidad de elementos interactivos con los que los usuarios podían controlar sus sistemas, como alias( accesos directos para comandos largos), capacidades de administración de trabajos, historial de comandos y más. Fue modelado a partir del lenguaje de programación C, en el que se escribió el sistema operativo Unix. Esto también significaba que los usuarios del shell Bourne tenían que aprender C para poder ingresar comandos en él. Además, csh tuvo bastantes errores que los usuarios y creadores tuvieron que resolver durante un período extenso de tiempo. La gente terminó usando el shell Bourne para scripts porque manejaba mejor los comandos no interactivos, pero se quedaba con el shell C para un uso normal.
Con el tiempo, muchas personas corrigieron errores y agregaron características al shell C, que culminaron 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 algunas características no estándar. David Korn de Bell Labs trabajó en KornShell, o "ksh", que intentó mejorar la situación al ser compatible con versiones anteriores con el lenguaje del shell Bourne, pero añadiendo muchas características del shell csh. Fue lanzado en 1983, pero bajo una licencia propietaria. No fue software libre hasta la década de 2000, cuando se lanzó bajo varias licencias de código abierto.
El nacimiento de bash
La interfaz de sistema operativo portátil para Unix, o POSIX, fue otra respuesta a las implementaciones csh propietarias agitadas. Creó con éxito un estándar para la interpretación de comandos( entre otras cosas) y, finalmente, reflejó muchas de las características de KornShell. Al mismo tiempo, el Proyecto GNU estaba intentando crear un sistema operativo gratuito 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 en las últimas décadas desde su primer lanzamiento en 1989, pero sigue siendo el shell por defecto en la mayoría de las distribuciones de Linux actuales. También es el shell predeterminado en macOS de Apple, y está disponible para su instalación en Windows 10 de Microsoft.
Más nuevos shells: ash, dash, zsh y fish
Mientras que la comunidad Linux se ha basado en Bash en los años posteriores, los desarrolladores no se detuvieroncreando nuevos proyectiles cuando Bash se lanzó por primera vez hace 28 años.
Kenneth Almquist creó un clon Bourne shell conocido como caparazón Almquish, A Shell, "ceniza", o algunas veces simplemente "sh".también era compatible con POSIX y se convirtió en el shell por defecto en BSD, una rama diferente de Unix. El caparazón de cenizas es más liviano que bash, lo que lo hace popular en sistemas Linux embebidos. Si tiene un teléfono Android rooteado con BusyBox instalado, o cualquier otro dispositivo con el paquete de software BusyBox, está usando el código de ash.
Debian desarrolló un entorno de shell basado en ceniza y lo llamó "dash".Está diseñado para ser compatible con POSIX y liviano, por lo que es más rápido que Bash, pero no tendrá todas sus características. Ubuntu usa el shell del tablero como su caparazón por defecto para tareas no interactivas, acelerando las secuencias de comandos del caparazón y otras tareas que se ejecutan en segundo plano. Ubuntu todavía usa bash para shells interactivos, sin embargo, por lo que los usuarios aún tienen el entorno interactivo con todas las funciones.
Uno de los shells más nuevos más populares es Z shell, o "zsh".Creado por Paul Falstad en 1990, zsh es un shell de estilo Bourne que contiene las características que encontrarás en bash, y aún más. Por ejemplo, zsh tiene corrector ortográfico, la capacidad de ver si hay inicios de sesión / logouts, algunas funciones de programación integradas como bytecode, soporte para notación científica en sintaxis, permite la aritmética de coma flotante y más funciones.
Otro shell más nuevo es el Friendly Interactive Shell, o "fish", lanzado en 2005. Tiene una sintaxis de línea de comandos única diseñada para ser un poco más fácil de aprender, pero no deriva del shell Bourne ni del shell C.Es una idea interesante, pero lo que aprendes a través del uso de peces no necesariamente te ayudará a usar bash y otras conchas derivadas de Bourne.
¿Cuál debería elegir?(y por qué Zsh es popular)
No es necesario que elija un shell. Su sistema operativo elige su shell por defecto para 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 bastantes funciones avanzadas, pero probablemente no las utilizará a menos que programe scripts de shell.
En sistemas Linux embebidos o sistemas BSD, terminará con el caparazón de cenizas. 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 caparazón de cenizas o guiones, aunque algunas funciones avanzadas de scripting no están disponibles en este ligero caparazón.
Casi todos los shell que encontrará están basados en Bourne y funcionan de manera similar, incluido zsh.
Es por eso que zsh es popular. Este shell más nuevo es compatible con bash, pero incluye más características. El shell zsh ofrece corrección ortográfica incorporada, finalización de línea de comandos mejorada, módulos cargables que actúan como complementos para su shell, alias globales que le permiten alias nombres de archivos o cualquier otra cosa en la línea de comandos en lugar de solo comandos, ymás apoyo de tematización. Es como bash, pero con muchos extras, funciones adicionales y opciones configurables que puedes apreciar si pasas mucho tiempo en la línea de comandos.
Si está familiarizado con bash, puede cambiar a zsh sin aprender una sintaxis diferente; solo obtendrá características adicionales.si está familiarizado con zsh, puede cambiar a bash sin aprender una sintaxis diferente; simplemente no tendrá acceso a esas funciones.
"Oh My ZSH" es una herramienta que te ayuda a habilitar más fácilmente los complementos de zsh y alternar entre los temas prefabricados, personalizando rápidamente tu shell zsh sin pasar horas ajustando las cosas.
También hay otros proyectiles. Por ejemplo, el shell tcsh aún está disponible y sigue siendo una opción. FreeBSD usa tsch como shell raíz predeterminado y ash como su caparazón interactivo predeterminado. Si usa la programación C regularmente, tsch podría ser una mejor opción para usted. Sin embargo, no es tan común como bash o zsh.
Cómo cambiar entre shells
Es fácil cambiar a un nuevo shell para probarlo. Simplemente instale el shell desde el administrador de paquetes de su distribución Linux y escriba el comando para iniciar el shell.
Por ejemplo, supongamos que quieres probar zsh en Ubuntu. Ejecutas los siguientes comandos para instalarlos y luego ejecutarlos:
sudo apt install zsh zshEntonces estarías sentado en un shell zsh. Escriba "exit" en el intérprete de comandos para abandonarlo y regresar a su shell actual.
Esto es solo temporal. Cada vez que abra una nueva ventana de terminal o inicie sesión en su sistema en la línea de comandos, verá su shell predeterminado. Para cambiar el intérprete de comandos que ve cuando inicia sesión, conocido como su shell de inicio de sesión, generalmente puede usar el comando chsh o "Cambiar shell".
Para usar este comando, primero deberá encontrar la ruta completa a su caparazón con el comando. Por ejemplo, digamos que queríamos cambiar al shell zsh. Ejecutaríamos el siguiente comando:
que zshEn Ubuntu, esto nos dice que el zsh binary 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:
chshDe acuerdo con el comando anterior, ingresaríamos /usr/bin/ zsh. El shell zsh sería nuestro predeterminado hasta que ejecutemos el comando chsh y lo cambiemos nuevamente.