En la actualidad hay bastantes shells en el sistema Linux y aun más que se pueden agregar fácilmente. Esta publicación examina algunos de los shells más populares, en qué se diferencian y los archivos que contribuyen a su configuración.
Se sabe que el shell predeterminado en la mayoría de los sistemas Linux es bash. Bash existe desde 1989 y estaba destinado a reemplazar el shell Bourne (sh). De hecho, si echa un vistazo a /bin/sh , probablemente encontrará que no es más que un enlace simbólico a /bin/bash.
$ ls -l /bin/sh lrwxrwxrwx. 1 root root 4 Jan 25 2021 /bin/sh -> bash
Shells populares
Algunas de las mejores y más populares conchas incluyen:
- bash
- fish*
- ksh
- tcsh*
- zsh
Los que tenían un asterisco tenían que instalarse en mis sistemas Fedora y Mint.
Si bien todos estos shells son agradables de usar, solo llegará a apreciarlos por completo si los usa por un tiempo.
bash
El shell más conocido, bash ( también conocido como “Bourne Again SHell”), es poderoso y proporciona muchos comandos extremadamente útiles para convertir incluso las tareas más complicadas en scripts. Incluye manipulación de directorios, finalización de pestañas, control de trabajos, expansión de llaves y tildes, alias, historial de comandos, elementos integrados cargados dinámicamente y más.
zsh
También derivado del shell Bourne, zsh también puede ejecutar casi cualquier script bash. Es altamente personalizable, proporciona funciones como completar tabulaciones, corrección ortográfica, historial de comandos, expansión remota de archivos, alias y más.
fish
Especialmente conocido por su manera amable y servicial. Puede sugerir comandos basados en su historial de comandos. Utiliza colores para resaltar problemas de sintaxis. Por ejemplo, comience a escribir un comando y las letras se volverán rojas si usa un carácter incorrecto. También admite secuencias de comandos y alias.
ksh
El shell Korn, ksh , proporciona funciones de edición de línea de comandos, control de trabajos, funciones y alias y funciones de E/S avanzadas.
tcsh
El shell tcsh es un shell C mejorado ( csh ). Algunas de sus características clave incluyen la finalización de comandos programables y la edición de la línea de comandos. Se siente simple, pero incluye una buena colección de características esenciales. Su extensa página de manual los detalla.
Ver shells disponibles
Para determinar qué shells están instalados en sus sistemas Linux, puede mirar el archivo /etc/shells . Sin embargo, probablemente notará que la mayoría se enumeran más de una vez (por ejemplo, /bin/bash y /usr/bin/bash ). Si ejecuta un comando como este, verá que los “extras” son simplemente enlaces físicos, no shells separados:
$ ls -li /bin/bash /usr/bin/bash 312765 -rwxr-xr-x. 1 root root 1390080 Jan 25 2021 /bin/bash 312765 -rwxr-xr-x. 1 root root 1390080 Jan 25 2021 /usr/bin/bash
Los 312765 al principio de estas líneas muestran los números de inodo.
Una forma más complicada, pero más fácil de ver los distintos shells es usar un comando como este que elimina los duplicados, pero solo muestra los shells (no las rutas completas):
$ cat /etc/shells | awk -F "/" '{print $NF}' | sort | uniq bash csh dash fish ksh rksh sh tcsh tmux
Cambiando tu shell
Si desea probar un shell diferente, puede usar el comando chsh (cambiar shell). Puede hacer esto escribiendo “chsh” y que le solicite el nuevo shell o proporcionándole su elección de shell de la siguiente manera:
$ chsh -s /bin/zsh
De cualquier manera, se le pedirá su contraseña y el cambio requerido se realizará en el archivo /etc/passwd . Su shell actual seguirá activo hasta su próximo inicio de sesión.
Si desea cambiar el valor predeterminado para todas las cuentas nuevas (asumiendo que usted es el único que las configura), puede crear un alias para el comando adduser que hace uso de la opción -s para especificar ese shell.
$ alias adduser="adduser -s /bin/zsh" $ echo 'alias adduser="adduser -s /bin/zsh"' >> ~/.bashrc
Sin embargo, el segundo de los dos comandos anteriores solo funciona para bash , ya que almacena el alias en su archivo .bashrc . Necesita cambiar esto al archivo de configuración para un shell diferente cuando no esté usando bash . Por ejemplo, guardaría el alias en el archivo ~/.config/fish/config.fish si estuviera usando fish .
También puede probar un shell invocándolo en la línea de comando de esta manera:
$ /bin/fish <== start fish Welcome to fish, the friendly interactive shell
Archivos de configuración de shell
La mayoría de los shells utilizan uno o más archivos de configuración que establecen muchas configuraciones de shell, como cuántos comandos se guardarán en su historial de comandos.
bash
Cuando inicia sesión como usuario de bash , el primer archivo leído es /etc/profile (un archivo de configuración relativamente para todo el sistema). Se abastece el /etc/bashrc archivo (el archivo de configuración específica de Bash) cuando se está utilizando bash. Después de eso, se ejecutará su archivo local ~/.bashrc . Esto significa que puede controlar la configuración personal realizando cambios en ese archivo.
zsh
El shell zsh usa los archivos /etc/profile and ~/.zsgrc.
fish
La concha de pescado usa solo su propio archivo de configuración: — ~/.config/fish/config.fish.
ksh
El shell ksh usa el archivo /etc/profile.
tcsh
El shell tcsh leerá un archivo ~/.tcshrc si configura uno.
Finalizando
Los sistemas Linux ofrecen muchas opciones para el shell que utiliza. Algunos te encantarán y otros quizás no, pero es fácil probar cualquiera de ellos y cambiar tu shell cuando encuentres el que prefieras.