Las 5 mejores shell para GNU/Linux

Vamos a ver las 5 mejores shell para GNU/Linux. En nuestros sistemas favoritos, comparados con otros privativos, es mucho más frecuente utilizar la consola de comandos, con más motivo aún si eres desarrollador o administrador de sistemas.

Las shell de las que vamos a hablar son las más populares, estas son tsch, fish, Korn Shell, Z Shell y como no, Bash.

¿Qué es una shell o interprete de comandos?

Cuando programamos, si somos desarrolladores, utilizamos múltiples lenguajes, ya sea Java, C, C# u otros; una vez hecho esto utilizamos un compilador, para que transforme el programa que hemos escrito en un código que pueda entender la computadora, esto es, básicamente 0 y 1. De esta manera se crea un fichero binario, que es el que luego utilizaremos para cargar el programa.

Una shell o interprete de comandos, funciona de manera similar a un compilador, ya que traduce nuestro código “humano” en código máquina. Por lo que podemos decir que se trata de una interfaz que interactúa con el sistema operativo. A medida que escribimos comandos en la shell, la shell es responsable de interpretar esos comandos y hacer que la magia suceda.

Las operaciones como copiar archivos o listarlos están todas dentro del ámbito de una shell. También es responsable de recordar el historial de comandos para verificar lo que pasó hace días o semanas.

Para conocer todas las shell que tenemos disponibles, sólo debemos listarlas:

  1. cat /etc/shells

Con el resultado:

  1. david@servubuntu:~$ cat /etc/shells
  2. # /etc/shells: valid login shells
  3. /bin/sh
  4. /bin/bash
  5. /bin/rbash
  6. /bin/dash
  7. /usr/bin/tmux
  8. /usr/bin/screen

Para saber la shell que estamos utilizando:

  1. david@servubuntu:~$ echo $0
  2. -bash

1. Bash

Como hemos comentado al principio de la entrada, Bash es la shell más popular entre los usuarios de GNU/Linux. Su nombre es un acrónimo de Bourne-Againt Shell. Gran parte de las distribuciones ya vienen con Bash como shell predeterminada. Su origen es del año 1989 por lo que ya tiene cierta historia a sus espaldas.

Su antecesor fue The Bourne Shell (sh), con origen en las grandes computadoras que utilizaban UNIX. Una de sus principales características es que se pueden pasar fácilmente los scripts de sh a bash. Además Bash ofrece varias mejoras versus su predecesor, como la finalización de comandos y el historial.

Aunque tiene muchas ventajas también tiene defectos, ya que parte de los usuarios más avanzados no lo consideran elegante, sobre todo a la hora de leerlo.

2. Korn Shell

Más conocido como ksh que Korn Shell, es una alternativa fiable que se originió en los laboratorios Bell a principios de la década de los 80 del siglo pasado. En sus inicios utilizaba licencias privativas, siendo es estándar en muchas unidades comerciales, por lo que no estuvo disponible para GNU/Linux hasta el año 2000.

No existen muchas diferentes entre Bash y ksh. Cada una tiene ciertas ventajas y desventajas sobre la otra. Por ejemplo, ksh soporta una sintaxis del comando «cd» que permite moverse entre directorios de una manera más eficiente, permite acceder a el valor de una variable usada en un loop fuera del mismo o soporta el comando «print» el cual es más completo que el comando «echo2. Por otra parte, bash maneja los códigos de salida «exit» a través de tuberías (pipes) de una manera más clara y además soporta completar nombres de archivos y comandos usando la tecla «tab» (un salvavidas que nos hace la vida más fácil)

Los veteranos de ksh comentan la superioridad de es este mencionando sus beneficios a la hora de elaborar scripts (guiones) Como por ejemplo tener una mejor sintaxis de bucles o formas más naturales de repetir comandos. Aún así, para los usuarios nóveles, existe muy poca documentación en Internet sobre ksh, en comparación con Bash.

Para probar ksh debemos escribir en la el intérprete de comandos:

  1. sudo apt install ksh
  2. ksh

3. Tcsh

Con Tcsh nos podemos remontar a los primeros días de UNIX. Sobre todo en lo que refiere a la Shell C (csh) con finalización programable de la línea de comandos, edición de línea de comandos y algunas otras características. Tcsh es la shell predeterminada para sistemas basados en BSD como por ejemplo FreeBSD.

Uno de sus puntos fuertes es su lenguaje para el scripting, muy similar al lenguaje C. Por lo que es muy recomendable si estás familiarizado con este lenguaje de programación. Aunque puede ser algo de lío si estás acostumbrado a interpretes como Bash.

Los scripts escritos en Tcsh tienen como principales características el modo de autocompletar con TAB. Además incluye el comando “history” , donde se nos mostrará el historial de los comandos utilizados, con una información detallada de la línea de tiempo.

Para utilizar Tsch, debemos escribir:

  1. sudo apt install tcsh
  2. tcsh

4. Fish

A diferencia de sus homónimos Fish ha incorporado un gran sentido del humor en su proyecto. De hecho en su web podemos ver el siguiente mensaje «Finalmente, se desarrolló una shell de línea de comandos para los 90», aunque este se lanzó en el año 2005. El nombre es un acrónimo de «Friendly interactive shell» Tiene muchas características muy interesantes. Por ejemplo, muestro en rojo la sintaxis errónea y la correcta en azul. Además incluye conjuntos de terminaciones de pestañas, como sugerencias autocompletadas codificadas por colores, que se basan en su historial.

Fish se enorgullece de completar el comando en función de las páginas de man de nuestra computadora. Entonces, si acabamos de instalar un programa nuevo y necesitamos acostumbrase a sus sintaxis, Fish tomará la sintaxis de la página del manual y la agregará a sus sugerencias de autocompletar. Por lo que Fish es una buena shell para empezar con la línea de comandos.

Para utilizar fish debemos escribir:

  1. sudo apt install fish
  2. fish

5. Z Shell

Ahora le toca a Z Shell, considerado por mucho la mejor shell. Zsh tiene muchas similitudes con bash y ksh e incorpora muchas de sus características principales. Algunas de sus ventajas principales incluyen una lista de autocompletar navegable. A diferencia de bash, que únicamente lista los comandos disponibles.

La corrección ortográfica en Zsh es muy superior a la de bash. En un comando cd, bash puede corregir hasta un carácter. Zsh, en cambio, puede configurarse para corregir automáticamente 10 errores de ortografía en una sola palabra. Al igual que otros de los que hemos hablando Zsh incorpora un historial de comandos.

Si queremos disponer de Zsh:

  1. sudo apt install zsh
  2. zsh

Seleccionar una shell por defecto

A petición del colega Víctor, un apunte, que en principio no iba en el artículo. Para seleccionar y dejar de forma permanente una shell por defecto, solo hemos de utilizar el comando «usermod«, de esta manera:

  1. usermod --shell /bin/ksh davidochobits

Si listamos los usuarios de «/etc/passwd/», ya veremos el cambios reflejado:

  1. cat /etc/passwd
  2. davidochobits:x:1000:1000:david:/home/davidochobits:/bin/ksh

Conclusión

Si durante todos estos años hemos visto las grandes ventajas de trabajar con GNU/Linux. Ahora hemos visto que, sobre todo si la consola de comandos es nuestra herramienta de trabajo principal, podemos pasar al siguiente nivel. Utilizando la shell que más se adapte a nuestras necesidades.

Las diferencias principales entre estas se pueden encontrar a la hora de realizar scripts o el uso de historial de los comandos. Algunos matices por aquí y otros por allá. Aunque sinceramente para la mayoría de los usuarios Bash será más que suficiente.

¿Qué shell sueles utilizar? ¿Has probado alguna que no sea Bash? ¿Qué te gustaría encontrar en el interprete de comandos ideal? ¡Comenta maldito/a!

Fuentes consultadas

Linuxhandbook.com – How the change shell in Linux

Makeuseof.com – Which of these 5 Linux shell is best?

Ccm.net – Diferencias en UNIX en bash y ksh