GNU/Linux >> Tutoriales Linux >  >> Linux

Secuencia de ejecución para .bash_profile, .bashrc, .bash_login, .profile y .bash_logout

Este artículo explicará la secuencia en la que se ejecutan los siguientes archivos:

  • /etc/perfil
  • ~/.bash_perfil
  • ~/.bashrc
  • ~/.bash_login
  • ~/.perfil
  • ~/.bash_logout

Secuencia de ejecución para shell de inicio de sesión interactivo

El siguiente pseudocódigo explica la secuencia de ejecución de estos archivos.

execute /etc/profile
IF ~/.bash_profile exists THEN
    execute ~/.bash_profile
ELSE
    IF ~/.bash_login exist THEN
        execute ~/.bash_login
    ELSE
        IF ~/.profile exist THEN
            execute ~/.profile
        END IF
    END IF
END IF

Cuando cierra sesión en el shell interactivo, la siguiente es la secuencia de ejecución:

IF ~/.bash_logout exists THEN
    execute ~/.bash_logout
END IF

Tenga en cuenta que /etc/bashrc es ejecutado por ~/.bashrc como se muestra a continuación:

# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Secuencia de ejecución para shell interactivo sin inicio de sesión

Al iniciar un shell interactivo sin inicio de sesión, la siguiente es la secuencia de ejecución:

IF ~/.bashrc exists THEN
    execute ~/.bashrc
END IF

Nota: Cuando se inicia un shell no interactivo, busca la variable de entorno ENV y ejecuta el valor del nombre de archivo mencionado en la variable ENV.

Probar la secuencia de ejecución

Una de las formas de probar la secuencia de ejecución es agregar diferentes valores de PS1 a estos archivos y volver a iniciar sesión en el shell y ver qué valor de PS1 fue seleccionado por el indicador de Linux. Además, anteriormente discutimos sobre cómo usar PS1 para hacer que su interfaz de Linux sea funcional y elegante.

1. /etc/profile se ejecuta. Agregue la siguiente línea de PS1 a /etc/profile y vuelva a iniciar sesión para asegurarse de que el aviso de Linux cambie al valor de PS1 establecido dentro de /etc/profile.

# grep PS1 /etc/profile
PS1="/etc/profile> "

[Note: re-login to see the prompt change as shown below]
Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2
/etc/profile>

Asegúrese de que ~/.bash_profile no tenga ningún PS1 para que lo anterior funcione correctamente.

2. ~/.bash_profile se ejecuta: Agregue el siguiente PS1 a ~/.bash_profile, ~/.bash_login, ~/.profile y ~/.bashrc. Vuelva a iniciar sesión para asegurarse de que el indicador de Linux cambie al valor de PS1 establecido dentro del  ~/.bash_profile como se muestra a continuación.

/etc/profile> grep PS1 ~/.bash_profile
export PS1="~/.bash_profile> "

/etc/profile> grep PS1 ~/.bash_login
export PS1="~/.bash_login> "

/etc/profile> grep PS1 ~/.profile
export PS1="~/.profile> "

/etc/profile> grep PS1 ~/.bashrc
export PS1="~/.bashrc> "

[Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next.
So, it took the PS1 from ~/.bash_profile as shown below.
It also did not execute ~/.bash_login, as ~/.bash_profile exists]
Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2
~/.bash_profile>

3. ~/.bash_login se ejecuta. Cambie el nombre de .bash_profile a otra cosa. Vuelva a iniciar sesión para asegurarse de que el indicador de Linux cambie al valor de PS1 establecido dentro de  ~/.bash_login como se muestra a continuación.

~/.bash_profile> mv .bash_profile bash_profile_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile, it executed ~/.bash_login]
Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2
~/bash_login>

4. ~/.profile se ejecuta. Cambie el nombre de .bash_login a otra cosa. Vuelva a iniciar sesión para asegurarse de que el indicador de Linux cambie al valor de PS1 establecido dentro del  ~/.profile como se muestra a continuación.

~/.bash_login> mv .bash_login bash_login_not_used

[Note: Upon re-login, it executed /etc/profile first.
Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile]
Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2
~/.profile>

5. ~/.bashrc se ejecuta para pruebas de shell sin inicio de sesión . Ejecutando bash” en el símbolo del sistema dará otro shell sin inicio de sesión, que invocará .bashrc como se muestra a continuación.

~/.profile> bash

[Note: This displays PS1 from .bashrc as shown below.]
~/.bashrc> exit
exit

[Note: After exiting from non-login shell, we are back to login shell]
~/.profile>


Si le gusta este artículo, márquelo como favorito en del.icio.us y tropezar .


Linux
  1. ¿La diferencia entre ~/.profile y ~/.bash_profile?

  2. Que hace . ~/.bashrc Comando Hacer??

  3. Ejemplos de ciclos for y while de Bash

  4. Directrices de ejecución de scripts de Shell para novatos

  5. Código para malloc y gratis

Las 10 mejores distribuciones de Linux para computadoras portátiles y de escritorio

.bashrc frente a .bash_profile

Guía de instalación y uso del cortafuegos CSF

Cómo hacer una copia de seguridad y restaurar la tarjeta SD para Raspberry Pi

Interfaz de cinta para GTK y Qt

¿Cuáles son las diferencias funcionales entre .profile .bash_profile y .bashrc