El Shell en Linux

Table of contents

Qué es el Shell en Linux?

Antes de poder interactuar con un sistema de Linux debemos entender como pasar intrucciones para operar.

En esta página veamos lo siguiente:

  • Qué es el SHELL en Linux?
  • Qué es el SHELL Predeterminado?

Ee esta página usamos el contexto del Sistema Operativo UBUNTU a menos que se aclare de otra manera.

Para poder interactuar con el sistema operativo de Linux, necesitamos la manera de entrar comandos y obtener la salida de los mismos. Para lograr esto, Linux provee lo que se conoce como el Shell, el cual es un programa que sirve para interactuar con el sistema a travez de una terminal que provee un indicador donde podemos entrar comandos.

El archivo /etc/shells contiene la lista de shells disponibles. La lista difiere entre sistemas operativos.

En Ubuntu vemos esta lista.

-> cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
/usr/bin/screen
/usr/bin/tmux

En Redhat vemos esta lista.

-> cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

El sistema operativo hace disponible un shell de la lista para servir como shell predeterminado para usuarios que entran al sistema.

Hay cuentas de sistemas que no necesitan un shell. En este caso especial, existe la opción de usar el comando nologin con la idea de prevenir a este tipo de cuenta de entrar al sistema.

Usando /usr/sbin/nologin como opción de shell para un usuario causa que ese usuario no pueda entrar al sistema. Por lo tanto, no lo uses a menos que entiendas su effecto.

El comando nologin esta presente en Ubuntu y RedHat.

devuser@ubuntu2204-1-devesp 
~/linux-devesp
hist:204 -> ls -l `which nologin`
-rwxr-xr-x 1 root root 14640 Feb  6 12:54 /usr/sbin/nologin*

Esta es una lista parcial de cuentas de sistema en Ubuntu mostrando /usr/sbin/nologin en lugar de un shell.

devuser@ubuntu2204-1-devesp 
~/linux-devesp
hist:202 -> grep nologin /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
sshd:x:107:65534::/run/sshd:/usr/sbin/nologin

Esencialmente nologin indica que esas cuentas no pueden entrar al sistema usando un nombre de usuario y contraseña. Por ejemplo, sshd es el daemon que maneja conecciones con el cliente SSH para entrar remotamente al sistema; no es un usuario y no necesita un shell. Lo mismo pasa con lp que se usa para manejar procesos de printear a un instrumento externo. La misma lógica aplica a toda cuenta de sistema que no requiere sesiones interactivas en una terminal.

El Shell Predeterminado

En Ubuntu y RedHat existe un ajuste en el archivo /etc/default/useradd que especifica el Shell predeterminado para usuarios. Este será el shell que el usuario usará para entrar comandos e interactuar con el sistema.

Por regla general el BASH o SH shell se da por shell predeterminado en varios sabores de Linux.

En Ubuntu, el shell predeterminado es /bin/sh

-> grep SHELL /etc/default/useradd
# The SHELL variable specifies the default login shell on your
# Similar to DSHELL in adduser. However, we use "sh" here because
SHELL=/bin/sh

En RHEL, el shell predeterminado es /bin/bash

 -> grep SHELL /etc/default/useradd
SHELL=/bin/bash

El comando siguiente muestra cual es nuestro shell corriente.

-> echo $SHELL
/bin/bash

SHELL es una variable disponible en el entorno del usuario. El valor de la variable se puede ver con el comando env.

-> env | grep -i shell
SHELL=/bin/bash

Un usuario puede cambiar a cualquiera de los shells disponibles en el sisema. Si el shell deseado no esta presente, puede ser instalado si existe la facilidad de hacerlo; generalmente esto no es necesario.

Conclusion

Es recomendable aprender como usar el shell de manera proficiente para tomar ventaja de muchos usos versatiles. Esta abilidad es un requerimiento para Administradores de Sistemas o desarrolladores.

Referencias

Glosario De Comandos

export
comando usado para crear variables con NOMBRE y VALOR en el SHELL
env
sirve para mostrar variables con NOMBRE y VALOR en el ambiente del usario.

Referencias Utiles

Paginas Manuales

Otras referencias

Return to main page.