Tipos de shell y clasificación de archivos de arranque de Bash

Lo primero que hace Bash cuando lo iniciamos es leer los archivos o scripts de arranque — los cuales sirven para personalizar el entorno de las sesiones, bien a nivel global, bien a nivel de usuario. Es en estos archivos donde podemos escribir nuestros aliases preferidos, etc.

Ahora bien, el tipo de archivo de arranque que se lee viene determinado por un parámetro fundamental: el tipo de shell o terminal. Veamos qué tipos de shell existen:

Tipos de shell

Shell interactiva de login

Es aquella en la que el usuario introduce las órdenes en la terminal a través del teclado (interactiva) y representa la vía por la que el usuario ingresa o se loguea en el sistema (de login).

Ejemplos

  • Terminales SSH

  • Accesos a una sesión Bash con su - username

  • Desde una interfaz gráfica, terminales abiertas con la combinación de teclas ctrl + alt + teclas de función (F1-F6) — con la combinación ctrl + alt +F7 se restablece la interfaz gráfica.

Shell interactiva de no-login

Es aquella en la que el usuario introduce las órdenes en la terminal a través del teclado (interactiva) y es, en realidad, un emulador de terminal que se inicia desde un entorno gráfico después del ingreso o logueo del usuario en el sistema (de no-login).

Ejemplos

  • gnome-terminal, konsole, etc.

Shell no interactiva y de no-login

Es aquella en la que no hay interacción con el usuario (no interactiva) ni logueo alguno (de no-login). Se trata, básicamente, del uso de scripts. En estos casos, Bash no lee ninguno de los archivos de arranque que se detallan más abajo.

Ejemplos

  • Scripts para realizar tareas cron, etc.

Bien, pues ya lo tenemos todo listo para hacer un resumen donde podamos consultar de forma clara qué archivo se lee en qué situación (en los casos donde hay más de un archivo, Bash lee el primero que encuentra):

Resumen comparativo de archivos de arranque de Bash

Archivos de arranque de shell interactiva de login

Nivel global

  • /etc/profile
  • /etc/profile.d/*

Nivel usuario

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile

Archivos de arranque de shell interactiva de no-login

Nivel global

  • /etc/bash.bashrc
  • /etc/bash/bashrc
  • /etc/bashrc

Nivel usuario

  • ~/.bashrc

¿Cómo sé qué tipo de shell tengo?

Si tienes abierta una Bash shell y no sabes de qué tipo se trata, puedes averiguarlo así:

Shell interactiva de login

Ejecutaremos el siguiente comando:

echo $0

Y nos dará como resultado:

-bash

o

-su

Shell interactiva de no-login

Ejecutaremos el siguiente comando:

echo $0

Y nos dará como resultado:

bash

o

/bin/bash

Halof!!!

_config.yml

Fuentes y recursos de interés:

Manual de BASH en web de GNU: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

Written on October 11, 2017