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
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.
# 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.
/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>
~/.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>
~/.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>
~/.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 .