Latinoamérica
de.novatoanovato@gmail.com

Comando -chsh-

Dedicado al nuevo usuario de software libre

Comando -chsh-

Comando chsh

El comando chsh, es una herramienta para interfaces de lineas de comando (CLI) disponible para sistemas operativos del tipo Unix, tal y como GNU/Linux, que provee de una serie de parámetros utilizados para cambiar el tipo de SHELL que estemos utilizando, por otra que se encuentre instalada en nuestro sistema operativo.

¿Que es una SHELL?

Antes que nada, repasemos el termino SHELL.

El SHELL es el programa que realmente procesa comandos y devuelve resultados. La mayoría de los SHELLs también gestionan procesos en primer plano, en segundo plano, historial de comandos y edición de línea de comandos. Estas características (y muchas más) son estándar en bash, el shell más común en los sistemas GNU/Linux modernos. Existen distintos tipos de shells, cada uno de ellos con características que los hacen distintivos unos de otros a pesar de sus similitudes.

Objetivo de este artículo

El objetivo de este articulo es que aprenda a utilizar el comando chsh, sus opciones y parámetros a fin de que le resulte sencillo hacer cambios de SHELL según lo requiera en su sistema operativo GNU/Linux.

Manual

Como con la mayoría de comandos las mayoría de los comandos, por no decir todos, cuenta con sus respectivas páginas de manual. Para acudir a ellas, ejecutamos la siguiente linea de instrucción:

man chsh

¿Cual es mi SHELL?

Si eres nuevo en GNU/Linux, este apartado podría serte útil, servirá como punto de partida. Saber cual SHELL estamos utilizando en primera instancia no es un dato menor, ya que a partir de allí es donde realizaremos los cambios o consultaremos si los cambios se hicieron correctamente. En GNU/Linux, una forma de consultar cual es nuestra SHELL es acudiendo a la variable de entorno ($SHELL), esta guarda en si contenido la SHELL en uso por el usuario en sesión. Para consultarla, ejecutamos:

echo $SHELL

Como podemos observar por la salida estándar obtendremos la SHELL que tenemos en uso, en mi caso seria zsh.

Observación: Un dato no menor, es que las SHELLs son indicadas en formato de rutas, particularmente como rutas absolutas, estas indican la dirección en la que se encuentra por defecto instalada en nuestro sistema según el estándar de jerarquías de directorios FHS. En este caso, en el directorio de binarios /bin. Es importante tener esto en cuenta, debido a que sera el formato que utilizaremos para leer o indicar una SHELL como parámetro de entrada, según se requiera.

Sintaxis

El comando chsh se corresponde con la siguiente sintaxis:

chsh [opción][usuario]

Opciones del comando chsh

A continuación veremos las opciones disponibles del comando chsh y como operar con ellas.

Listar las SHELLs disponibles en nuestro sistema

La primera opción que veremos sera la de listar las SHELLs que se encuentren instaladas en nuestro sistema. Esto es de vital importancia debido a que no podremos seleccionar una SHELL no instalada. El comando chsh ejecutado con la opción -l, nos listara todas las SHELLs instaladas en nuestro sistema operativo. Veamos.

chsh -l

En caso de requerir una SHELL no listada, deberá instalarla previamente.

El comando chsh obtiene este dato del fichero /etc/shells, si optamos por leerlo veremos lo siguiente:

cat /etc/shells

Cambiar la SHELL del usuario actual en modo interactivo

El comando chsh por si solo nos permite ejecutar el cambio de SHELL de forma interactiva, indicándonos la SHELL en uso y solicitándonos ingresar la aquella a la que deseamos cambiar. Cabe señalar que será necesario contar con permisos de administrador para realizar este tipo de modificaciones. Sin mas, ejecutemos:

chsh

Una vez ejecutado el comando y autenticado nuestro usuario, se nos mostrara la SHELL que tenemos en uso (/bin/zsh) y se nos pedirá que ingresemos la SHELL a la que queremos cambiar.

Ingresamos para este ejemplo la SHELL valida (instalada en nuestro sistema operativo) /bin/bash.

Tras confirmar, veremos que de haber ingresado la SHELL, el cambio se habrá realizado.

Reiniciando nuestro emulador terminal y ya habrán surgido efecto los cambios. Para comprobarlo, ejecutamos:

echo $SHELL

Cambiar la SHELL del usuario actual en modo no interactivo

El comando chsh cuenta una opción que nos permiten cambiar la SHELL por defecto de forma directa, la opción -s realizar el cambio a otra SHELL valida indicada en el mismo tiempo de ejecución. Veamos a continuación como utilizarlo.

NOTA: Es importante saber que este tipo de modificaciones requieren permisos de autenticación.

Antes de realizar el cambio, veamos cual es nuestra SHELL y cuales se encuentran instaladas y disponibles para su uso. Ejecutemos:

echo $SHELL

chsh -l

Siendo nuestra SHELL /bin/zsh cambiaremos a la SHELL /bin/dash, listada entre las instaladas en nuestro sistema operativo, haciendo uso de la opción -s.

chsh -s /bin/dash

Verificamos que se haya realizado el cambio.

NOTA: Tenga en cuenta que la variable de entorno $SHELL se actualizará una vez reiniciado el sistema, por lo que es probable al consultarla conserve en su contenido no actualizado. Por otra parte, reiniciando nuestro emulador de terminal ya aplican los cambios y podremos hacer uso de la SHELL que hayamos seleccionado.

echo $SHELL

Cambio de SHELL de otro usuario

Hasta entonces hemos visto diferentes formas de cambia nuestra SHELL o lo que seria lo mismo a decir: del usuario en sesión. Pero el comando chsh, nos permite también realizar este cambio sobre un usuario diferente al que se encuentra en sesión, siempre y cuando este usuario cuente con lo privilegios necesarios. Veamos a continuación como modificar la SHELL de otro usuario utilizando el comando chsh.

Cambio de SHELL de otro usuario en modo interactivo

Para cambiar la SHELL de otro usuario de forma interactiva voy a iniciar sesión como usuario root y efectuare el cambio sobre el usuario cristian. Basándonos en la sintaxis del comando chsh, donde pasamos como parámetro el usuario sobre el cual queramos realizar el cambio, ejecutamos la siguiente instrucción.

chsh cristian

Como vemos, nos indica que el usuario en cuestión tiene configurada la SHELL /bin/zsh. Para este ejemplo cambiaremos a la SHELL /bin/dash. Veamos.

Una vez confirmamos el cambio, iniciamos sesión con el usuario utilizado para este ejemplo y comprobamos que se haya realizado el cambio verificando la variable de entorno $SHELL.

echo $SHELL

El cambio fue realizado con éxito.

Cambio de SHELL de otro usuario en modo no interactivo

El este caso aprovecharemos los conceptos ya vistos para no extendernos tanto. Lo que haremos será utilizar el comando chsh con la opción -s, que ejecuta un cambio de SHELL, y le indicaremos la nueva SHELL a la que queremos cambiar. De ejecutarlo de esta formo estaríamos aplicando los cambios sobre nuestro usuario, por lo que sera necesario indicar también el usuario sobre el que queramos aplicar los cambios. Para comprender el contexto global, es necesaria señalar que nos encontramos en sesión con el usuario root y que aplicaremos los cambios sobre el usuario existente cristian. Entonces, ejecutemos:

chsh -s /bin/zsh cristian

Para comprobar los cambios, iniciamos sesión con el usuario en cuestión y ejecutamos:

echo $SHELL

Puedes seguirnos en:

Ayudanos a mantener el sitio con una contribución.
Muchas gracias!

Espero sea de utilidad.
Saludos, Cristian Bellini.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.