Cómo cambiar su shell predeterminado en Linux con chsh

Bash no es el único shell de Linux. Es fácil probar otros shells, como Zsh, que es muy popular. Cuando haya encontrado uno que le guste, use el comando chsh para convertirlo en su shell predeterminado. Te mostraremos cómo.

Por qué es importante un caparazón

La cáscara se encuentra entre usted y el sistema operativo. Proporciona el entorno dentro de una ventana de terminal que le permite escribir comandos y ejecutar programas. El shell verifica su entrada y descubre lo que quiere. Si puede realizar su oferta por sí mismo, lo hace. Si necesita ayuda externa, busca la ruta y encuentra los programas que pueden hacer lo que sea que solicite.

Hay muchos shells diferentes disponibles en Linux. Todos le permiten realizar las mismas tareas básicas: explorar el sistema de archivos, trabajar con archivos, iniciar programas y ejecutar scripts. Sin embargo, cada uno realiza estas tareas a su manera y tiene sus propias características e idiosincrasias especiales.

Las carcasas tienden a ser diseñadas por personas que quieren que las cosas se comporten de una manera específica. Si su pensamiento se alinea con el de ese diseñador, ese caparazón podría ser una buena opción para usted. Además, probar un nuevo shell en Linux es fácil.

En la mayoría de las distribuciones de Linux, incluido Ubuntu, el shell predeterminado es bash. Hace un gran trabajo y es muy capaz. Sin embargo, otro shell podría ofrecer una diferencia de ahorro de tiempo que tendría un gran impacto en su flujo de trabajo. ¡Nunca sabrás si no miras!

Un balde de conchas

Hemos cubierto los diferentes shells de Linux antes, pero aquí hay una introducción rápida a los más comunes:

bash: El Bourne de nuevo shell es el valor por defecto en muchas distribuciones.
rbash: esto Restringido bash shell proporciona una funcionalidad mínima a la persona o script que se ejecuta en él.
ceniza: El Concha de almquist es una versión más ligera de bash.
tablero: Debian Alquist Shell es el script de shell predeterminado en Ubuntu. Si bien bash es el inicio de sesión y el shell interactivo predeterminados, dash se usa para ejecutar procesos del sistema porque es mucho más liviano que bash.
zsh: El caparazón Z es una versión moderna de la familia de shells bash. Ofrece grandes mejoras, como revisiones ortográficas de comandos y correcciones sugeridas.
pescado: este cáscara interactiva amigable fue escrito desde cero y no se deriva de ninguna de las otras familias de shell. Está destinado a ser fácil de usar. Entre sus muchas otras ventajas, Fish ofrece sugerencias de comandos basados ​​en su historial y el contenido de la carpeta actual, similar a Texto predictivo.
ksh: El KornShell proporciona un lenguaje de secuencias de comandos particularmente sólido.

  Cómo configurar un panel de servidor Linux con Linux Dash

Lista de las carcasas instaladas

Para ver qué shells están instalados en su computadora, use este comando. Simplemente enumera el contenido del archivo / etc / shells:

cat /etc/shells

cat / etc / shells en una ventana de terminal.

Hemos mencionado bash, dash y rbash, pero ¿qué es sh?

sh es el Thompson shell, escrito en 1971 por Ken Thompson de Laboratorios Bell fama. Ya no se mantiene y hace mucho que ha sido reemplazado por conchas modernas. Se incluye únicamente para mantener la compatibilidad con scripts más antiguos que todavía tienen lo siguiente como primera línea:

#!/bin/sh

Esto indica al sistema que utilice el shell sh para ejecutar el script. ¿Realmente tiene ese shell antiguo en su máquina y se está utilizando para ejecutar sus scripts? El comando which nos dirá qué programa se ejecuta realmente cuando escribe un comando.

Veamos qué se ejecuta cuando escribes sh:

which sh

Esto parece encontrar un binario. Sin embargo, si profundizamos un poco más, veremos que es un enlace simbólico que en realidad apunta al guión, el shell ligero que se usa para ejecutar scripts:

ls -l /bin/sh

que aparece en una ventana de terminal.

Esa es una forma ordenada y liviana de proporcionar una red de seguridad para los scripts que esperan encontrar sh en los sistemas modernos.

  Cómo comprimir archivos PNG en Linux

Instalación de otro shell

Instalemos la concha de pescado y configurémosla como predeterminada para Dave. En Ubuntu, escribimos el siguiente comando:

sudo apt-get install fish

sudo apt-get install fish en una ventana de terminal.

En Manjaro, use pacman:

sudo pacman -Sy fish

sudo pacman -Sy fish en una ventana de terminal.

En Fedora, escriba lo siguiente:

sudo dnf install fish

sudo dnf instala pescado en una ventana de terminal.

Cuando la instalación esté completa, puede verificar los shells instalados una vez más:

cat /etc/shells

cat / etc / shells en una ventana de terminal.

Nuestro nuevo caparazón aparece como / usr / bin / fish. Tome nota de ese camino, lo necesitará en breve.

La variable de entorno $ SHELL

La variable de entorno $ SHELL contiene el nombre de su shell actual. Podemos verificar cuál está configurado con echo:

echo $SHELL

Empecemos con la concha de pescado:

fish

Ahora, revisemos nuevamente lo que dice la variable de entorno $ SHELL:

echo $SHELL

echo $ SHELL en una ventana de terminal.

La primera vez que usamos echo $ SHELL, estamos en el shell bash. La variable de entorno contiene la ruta al ejecutable de bash, / bin / bash.

Cuando lanzamos la concha de pescado, recibimos un mensaje de bienvenida amigable y el símbolo del sistema cambia. Lo que podría sorprender es que el entorno $ SHELL todavía tiene la ruta al ejecutable bash, / bin / bash. Está bien, esto es normal.

Cuando inicia un nuevo shell (o cualquier otro programa), hereda el entorno del shell padre. Entonces, la concha de pescado hereda las variables de entorno globales y exportadas de la concha de bash. Debido a que el valor de la variable de entorno $ SHELL no se ha cambiado, tiene el mismo valor en la concha de pescado que en la de bash.

Realizamos pescado como cualquier otro programa. También podemos usar exit para salir de la concha de pescado. Se cierra como cualquier otro programa y regresamos al shell bash.

Eso es genial para probar nuevas conchas, ver lo que pueden hacer y si te llevas bien con ellas. Puede explorar antes de dar el salto y adoptar uno como su caparazón de referencia.

  Las 5 mejores estaciones de acoplamiento para portátiles para usar con Linux (edición 2021)

Si decide hacer que el pez, o cualquier otro caparazón, sea su valor predeterminado, deberá usar el comando chsh.

El comando chsh

El comando chsh le permite cambiar su shell predeterminado. El truco es ser consciente de que le permite cambiar tanto el inicio de sesión predeterminado como los shells interactivos predeterminados. Es posible que desee cambiar uno u otro, o ambos.

Siempre que inicie sesión para obtener un símbolo del sistema, utilice el shell configurado para ser su shell de inicio de sesión. Cuando ya está conectado y abre una ventana de terminal, usa el shell configurado para ser su shell interactivo. Estos pueden ser los mismos o diferentes caparazones.

Para configurar su shell de inicio de sesión, use chsh sin parámetros:

chsh

chsh en una ventana de terminal.

Se le solicita su contraseña. Luego, debe escribir la ruta al nuevo shell y presionar Enter.

Si hacemos una conexión remota a esta computadora de prueba desde otra, nos encontraremos en la cáscara de pescado una vez que hayamos iniciado sesión.

Conexión SSH que muestra la concha de pescado como shell de inicio de sesión, en una ventana de terminal.

Para cambiar su shell interactivo use chsh con la opción -s (shell). Pase la ruta al nuevo shell en la línea de comando:

chsh -s /usr/bin/fish

chsh -s / usr / bin / fish en una ventana de terminal.

Se le solicita su contraseña y se le devuelve al símbolo del sistema de su shell actual. Debe cerrar la sesión y volver a iniciarla para que el cambio surta efecto. Cuando lo haga, verá el saludo y el símbolo del sistema de concha de pescado.

La variable de entorno $ SHELL ahora contiene la ruta a su nuevo shell predeterminado:

echo $SHELL

echo $ SHELL en una ventana de terminal.

Cambiar el shell de otra cuenta de usuario

Si tiene privilegios de root y puede usar sudo, puede cambiar los shells de otras cuentas de usuario. El comando es el mismo que antes, con la adición del nombre de usuario de esa persona agregado a la línea de comando:

sudo chsh -s /usr/bin/fish mary

sudo chsh -s / usr / bin / fish mary en una ventana de terminal.

La próxima vez que Mary inicie sesión, verá el nuevo shell cuando abra una ventana de terminal.

el usuario mary en el símbolo del sistema de shell de pescado, en una ventana de terminal.

Cada