Cambiando de Intérprete de Comandos por consola en Linux.

El dia de hoy recibí una llamada de una amiga, debido a que tenía un problema con un usuario vía SSH hacia un servidor, y es que, al intentar ejecutar comandos habituales ya que al parecer la consola estaba “loca”. Al intentar ir al historial de comandos ejecutados últimamente con las teclas de dirección, colocaba símbolos extraños, igual sucedía con la tecla BACKSPACE para borrar, no tenía autocompletado de nombres; simplemente su operación no funcionaba y parecía una cosa del demonio.

Quieres saber cuál era su problema? Sigue leyendo!

Debo aceptar que al principio no le creía demasiado, y es que por la manera de redactarme el problema, parecía que el error era más bien Capa 8. Usuario.

Cuando por fin me pudo compartir unas pantallas de su error, era evidente que tenía configurado un Intérprete de Comandos configurado para su usuario. Según wikipedia, un intérprete de comandos es:

Es un programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo.

En realidad se trata del programa que se encargará de interpretar los comandos que nosotros vayamos indicando por consola hacia el SO, en pocas palabras. Para tal efecto existen diferentes Intérpretes de comandos en diferentes versiones a lo largo del desarrollo Unix. Uno de los más conocidos es Bourne Shell (siendo éste el agregado por default), y otros son Korn Shell(ksh) y Zsh.

Por default, todo usuario tiene un Intérprete de comandos asignado a su configuración que permitiría la realización de éstas tareas, existen distintas maneras de averiguarlo. Uno de los archivos de administración de usuarios como es /etc/passwd nos puede mostrar ésta información, en Debian se muestra de la siguiente manera:

pako@vdebian:~$ cat /etc/passwd | grep $USERNAME
pako:x:1000:1000:pako,,,:/home/pako:/bin/bash

Simplemente realizamos una búsqueda de la línea de configuración para nuestro usuario (variable de entorno $USERNAME) y al final, encontraremos el Intérprete asociado, en este caso /bin/bash.

Otra manera existe es a través de otra variable de ambiente llamada $SHELL, por lo que mostrarla en pantalla debería ser:

pako@vdebian:~$ echo $SHELL
/bin/bash

Y tarán. El usuario tiene /bin/bash, el intérprete por default. El intérprete debería de ser configurado desde la creación del usuario, pero en cualquier momento puede ser modificado gracias al comando chsh, su sintaxis es:

chsh [-s shell] [-l] [-u] [-v] [username]

Siendo chsh, el comando principal encargado de tal acción.

-s, la opción para asignar el nuevo shell de login

-l, nos muestra la lista de shell (no todas disponibles en todos los sistemas) (/etc/shells)

-u, ayuda del comando.

-v, la versión instalada del comando.

username, nombre de usuario para realización de los cambios.

Como ejemplo:

 pako@vdebian:/usr/bin$ chsh -s /usr/bin/tcsh pako

Nos pedirá confirmación por contraseña para el usuario “pako”, y el shell de login se habrá modificado a tcsh. Podremos realizar la búsqueda del registro del usuario en el archivo /etc/passwd para ver el cambio aplicado correctamente:

pako:x:1000:1000:pako,,,:/home/pako:/usr/bin/tcsh

Nota: Claro está que el shell a utilizar debe encontrarse instalado en el sistema.

Dudas?

Facebook Twitter Email

Entradas relacionadas

  • Sin entradas relacionadas

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *