Saltar al contenido

Cómo cambiar el shell predeterminado usando chsh en Linux

Un indicador de shell estilizado en sistemas portátiles Linux de estilo Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

Bash no es el único shell de Linux. Es fácil probar otros shells como el muy popular Zsh. Si encuentras algo que te gusta chsh Un comando que lo convierte en el shell predeterminado. Te mostraré cómo.

Por que la cáscara es importante

cáscara Ubicado entre usted y el sistema operativo. Proporciona un entorno en una ventana de terminal donde puede ingresar comandos y ejecutar programas. El shell verifica su entrada y encuentra lo que necesita. Si puede ejecutar su oferta por sí mismo, lo hará. Si necesita ayuda externa, busque la ruta para encontrar un programa que pueda realizar la operación solicitada.

Hay varios shells disponibles en Linux. Todos estos le permiten realizar las mismas tareas básicas, como explorar el sistema de archivos, manipular archivos, iniciar programas y ejecutar scripts. Sin embargo, cada uno realiza estas tareas a su manera y tiene sus propias características y peculiaridades especiales.

Las carcasas tienden a ser diseñadas por personas que quieren que las cosas funcionen de una manera particular. Si sus pensamientos están en línea con los del diseñador, la carcasa puede ser adecuada para usted. Además, es fácil probar un nuevo shell en Linux.

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, diferentes shells pueden proporcionar diferencias que ahorran tiempo y que pueden tener un impacto significativo en su flujo de trabajo. ¡Nunca sabré si no lo ves!

Relación: ¿Qué es ZSH y por qué debería usarlo en lugar de Bash?

Cubo de concha

Hemos hablado de varios shells de Linux antes, pero aquí hay un vistazo rápido a los más comunes.

  • intento: El· Bourne Shell de nuevo Defecto En muchas distribuciones.
  • rbash: esta Limitado bash El shell proporciona una funcionalidad mínima a la persona o el script que se ejecuta en él.
  • Ceniza: El· Concha almquist Una versión ligera de bash.
  • pizca: Shell de Debian Alquist Script de shell predeterminado En Ubuntu.en la otra mano bash El inicio de sesión y el shell interactivo predeterminados. dash Mucho más ligero que, por lo que se utiliza para ejecutar procesos del sistema. bash..
  • zsh: Cáscara Z Es una vista moderna de bash Familia Shell. Proporciona grandes mejoras como la revisión ortográfica de comandos y las correcciones sugeridas.
  • pez: esta Carcasa interactiva amigable Fue creado desde cero y no se deriva de otras familias de shell. Esto está destinado a ser fácil de usar. Entre muchas otras ventajas, fish proporciona sugerencias de comandos basadas en el historial y el contenido de la carpeta actual: Texto predictivo..
  • ksh: KornShell Proporciona un lenguaje de secuencias de comandos particularmente poderoso.

Relación: ¿Cuál es la diferencia entre Bash, Zsh y otros shells de Linux?

Lista de shells instalados

Utilice este comando para ver qué shells están instalados en su computadora.Solo enumera el contenido /etc/shells Expediente:

cat /etc/shells

Mencionamos bash, dash,y rbash, Pero que sh??

sh eso es Thompson Shell, el método escrito en 1971 Ken Thompson de Laboratorios Nokia Bell fama. Ya no se mantiene y ha sido reemplazado durante mucho tiempo por conchas modernas. Esto se incluye solo para que la primera línea siga siendo compatible con el siguiente script anterior.

#!/bin/sh

Esto le dice al sistema que use sh El shell que ejecuta el script. ¿Realmente tiene ese shell antiguo en su máquina y se usa para ejecutar sus scripts?El· which El comando le dice qué programa se ejecuta realmente cuando ingresa el comando.

Veamos que pasa cuando escribes sh:

which sh

Esto parece encontrar el binario. Sin embargo, si profundiza un poco más, verá que en realidad es el enlace simbólico al que está apuntando. dash, Shell ligero utilizado para ejecutar scripts:

ls -l /bin/sh

Esta es una forma sencilla y ligera de proporcionar una red de seguridad para los scripts que espera encontrar. sh Con el último sistema.

Instalar otro shell

Vamos a instalar fish Crea un shell y configúralo como predeterminado dave.. En Ubuntu, ingrese el siguiente comando:

sudo apt-get install fish

En Manjaro pacman:

sudo pacman -Sy fish

En Fedora, escriba:

sudo dnf install fish

Una vez completada la instalación, puede volver a comprobar el shell instalado.

cat /etc/shells

El nuevo caparazón debería verse así /usr/bin/fish.. Presta atención a ese camino. Lo necesitará pronto.

Variable de entorno $ SHELL

El· $SHELL La variable de entorno contiene el nombre del shell actual.Puedes comprobar cuál está configurado echo:

echo $SHELL

Empecemos fish cáscara:

fish

Comprobemos de nuevo. $SHELL Según variables de entorno:

echo $SHELL

Cuando se usa por primera vez echo $SHELL,Nosotros bash cáscara.Las variables de entorno mantienen el camino a bash Ejecutable, /bin/bash..

Cuando se lanza fish El shell muestra un mensaje de bienvenida descriptivo y modifica el símbolo del sistema.Lo que es asombroso $SHELL El medio ambiente todavía abre el camino a bash Ejecutable, /bin/bash.. Está bien, esto es normal.

Cuando inicia un nuevo shell (o cualquier otro programa), hereda el entorno del shell padre. Entonces fish El shell establece las variables de entorno global y las variables de entorno exportadas. bash cáscara.El valor de $SHELL Las variables de entorno no han cambiado. Mismo valor. fish El caparazón que hizo bash cáscara.

Estaba corriendo fish Como cualquier otro programa.También puede ser usado exit Abandonar fish cáscara. Salga como cualquier otro programa y bash cáscara.

Esto es genial para probar nuevos caparazones, ver lo que pueden hacer y ver si funcionan bien con el caparazón. Puedes explorarlo antes de saltar y adoptarlo como un caparazón confiable.

Si decides hacer fish-O cualquier otro shell-Por defecto, debes usar chsh mando.

comando chsh

El· chsh Puede usar comandos para cambiar el shell predeterminado. El truco es saber que puede cambiar tanto el shell de inicio de sesión predeterminado como el shell interactivo predeterminado. Le recomendamos que cambie uno o ambos.

Siempre que inicie sesión y obtenga un símbolo del sistema, use el shell configurado como shell de inicio de sesión. Si ya ha iniciado sesión y tiene una ventana de terminal abierta, use un shell configurado como shell interactivo. Pueden ser el mismo caparazón o diferentes caparazones.

Para configurar un shell de inicio de sesión chsh Sin parámetros:

chsh

Se le pedirá que ingrese la contraseña. Luego debe ingresar la ruta al nuevo shell y presionar Enter.

Si se conecta a esta computadora de prueba de forma remota desde otra computadora, fish Después de iniciar sesión, shell.

Para cambiar el shell interactivo chsh Con -s Opción (Shell). Pase la ruta al nuevo shell en la línea de comando.

chsh -s /usr/bin/fish

Se le pedirá una contraseña y volverá al símbolo del sistema del shell actual. Debe cerrar la sesión y luego volver a iniciarla para que los cambios surtan efecto.Cuando lo haces, dices hola fish Símbolo del sistema de Shell.

El· $SHELL Las variables de entorno ahora contienen la ruta al nuevo shell predeterminado.

echo $SHELL

Cambiar el caparazón de otra cuenta de usuario

Si tiene privilegios de root y puede usarlo sudo, Puede cambiar el caparazón de otras cuentas de usuario. El comando es el mismo que antes, pero el nombre de usuario de la persona se ha agregado a la línea de comando.

sudo chsh -s /usr/bin/fish mary

Cuándo mary La próxima vez que inicie sesión, verá un nuevo shell cuando abra una ventana de terminal.

Todo el mundo tiene un favorito

¡Es genial siempre que esté satisfecho con su elección de caparazón y funcione para usted! Tenga en cuenta que debe poder ejecutar scripts comunes, como rutinas de instalación. Para los proyectiles mencionados aquí, esto no debería ser un problema.

Por supuesto, también puede descargar e instalar un nuevo shell y usarlo como prueba de manejo sin cambiar la configuración de su computadora. Cuando estés listo para hacer un nudo chsh Te llevaremos a cabo una ceremonia.