Búsqueda de sitios web

Cómo cambiar el shell de usuario predeterminado en Linux


El shell, o interfaz de línea de comandos, es un componente crucial del sistema operativo Linux y proporciona a los usuarios una forma poderosa de interactuar con el sistema.

Cada usuario en un sistema Linux está asociado con un shell predeterminado, que determina el intérprete de comandos que utiliza al interactuar con el sistema.

Cambiar el shell predeterminado de un usuario puede ser necesario por varios motivos, como preferencias personales o la necesidad de funciones específicas ofrecidas por un shell diferente.

En este artículo, exploraremos el proceso de cambiar el shell predeterminado de un usuario en Linux. El shell es un programa que acepta e interpreta comandos; Hay varios shells de código abierto como bash, sh, ksh, zsh, fish, y muchos otros shells menos conocidos disponibles en Linux.

Shell bash de Linux

Bash (/bin/bash) es un shell popular en la mayoría, si no en todas, las distribuciones de Linux, y normalmente es el shell predeterminado para las cuentas de usuario.

Hay varias razones para cambiar el shell de un usuario en Linux, incluidas las siguientes:

  • Para bloquear o deshabilitar los inicios de sesión de usuarios normales en Linux usando un shell nologin.
  • Utilice un script o programa contenedor de shell para registrar los comandos del usuario antes de enviarlos a un shell para su ejecución. Aquí, usted especifica el contenedor de shell como el shell de inicio de sesión de un usuario.
  • Para satisfacer las demandas de un usuario (quiere utilizar un shell específico), especialmente aquellos con derechos administrativos.

Al crear cuentas de usuario con las utilidades useradd o adduser, el indicador --shell se puede usar para especificar el nombre del shell de inicio de sesión de un usuario distinto al especificado en los respectivos archivos de configuración.

Se puede acceder a un shell de inicio de sesión desde una interfaz basada en texto o mediante SSH desde una máquina Linux remota. Sin embargo, si inicia sesión a través de una interfaz gráfica de usuario (GUI), puede acceder al shell desde emuladores de terminal como xterm, konsole y muchos más.

Listar shells disponibles en un sistema Linux

En Linux, el archivo /etc/shells se usa comúnmente para almacenar una lista de shells de inicio de sesión válidos instalados en el sistema. Este archivo ayuda a identificar qué shells están disponibles para que los usuarios los establezcan como su shell predeterminado mediante comandos como chsh.

Para ver la lista de shells disponibles en un sistema Linux, puede utilizar el siguiente comando:

cat /etc/shells

Resultado de muestra:

/etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

Antes de continuar, tenga en cuenta que:

  • Un usuario puede cambiar su propio shell a cualquier cosa: lo cual, sin embargo, debe aparecer en el archivo /etc/shells.
  • Sólo el root puede ejecutar un shell que no figura en el archivo /etc/shells.
  • Si una cuenta tiene un shell de inicio de sesión restringido, solo el root puede cambiar el shell de ese usuario.

Encuentre el Shell actual en Linux

Antes de cambiar el shell de un usuario predeterminado, es importante determinar el shell actual ejecutando el siguiente comando echo, que muestra el shell actual para el usuario que ha iniciado sesión.

echo $SHELL

/bin/bash

El resultado muestra que el usuario está utilizando actualmente el shell Bash (/bin/bash).

Cambiar el Shell predeterminado en Linux

Ahora analicemos tres formas diferentes de cambiar el shell de usuario predeterminado de Linux.

1. Utilidad de modificación de usuario

El comando usermod se utiliza para modificar los detalles de la cuenta de un usuario, almacenados en el archivo /etc/passwd y la opción -s o --shell. se utiliza para cambiar el shell de inicio de sesión del usuario.

En este ejemplo, primero verificaremos la información de la cuenta del usuario tecmint para ver su shell de inicio de sesión predeterminado y luego cambiaremos su shell de inicio de sesión de /bin/sh a /bin/bash como sigue.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd

Ahora el shell predeterminado para el usuario “tecmint” se cambiará a bash.

2. Utilidad chsh

El comando chsh se utiliza para cambiar el shell de inicio de sesión predeterminado del usuario de forma interactiva utilizando la opción -s o –shell como se muestra.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd

Reemplace “/bin/sh” con la ruta real al shell que desea configurar. Por ejemplo, para configurar el shell en sh, usaría “/bin/sh”.

Es importante tener en cuenta que los cambios en el shell predeterminado generalmente entran en vigor en su próximo inicio de sesión.

Los dos métodos anteriores modifican el shell especificado en el archivo /etc/passwd que puede editar manualmente como en el tercer método a continuación.

3. Cambiar el Shell de usuario en el archivo /etc/passwd

En este método, simplemente abra el archivo /etc/passwd usando cualquiera de sus editores de texto de línea de comando favoritos y cambie el shell de un usuario específico.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd

Localice la línea correspondiente al usuario para quien desea cambiar el shell predeterminado. Por ejemplo, si la línea se ve así:

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

El último campo, /bin/bash, representa el shell predeterminado (en este caso, Bash).

Para cambiar el valor del campo Shell al Shell deseado, simplemente especifique la ruta a un Shell (/bin/zsh) como se muestra.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Cuando haya terminado de editar, guarde y cierre el archivo.

¿Cómo instalar otro Shell?

Al igual que otros paquetes de software, los shells populares como Zsh y Fish se pueden instalar fácilmente desde el repositorio de su distribución, como se muestra.

Instalar Zsh Shell en Linux

Para instalar Zsh en Linux, utilice el siguiente comando apropiado para su distribución de Linux específica.

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

Instalar Fish Shell en Linux

Para instalar Zsh en Linux, utilice el siguiente comando apropiado para su distribución de Linux específica.

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

No olvides leer estos temas relacionados:

En este artículo, describimos varias formas de cambiar el shell de un usuario en Linux. Para compartir cualquier idea con nosotros, utilice la sección de comentarios a continuación.