Seleccionando y cambiando tu Linux Shell

0
1041

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.