~/.bashrc
y /etc/bash.bashrc
se ejecutan cada vez que bash
se inicia un shell interactivo .
Por el contrario, ~/.profile
y /etc/profile
se ejecute cada vez que un inicio de sesión se inicia la cáscara. Por lo tanto, no tiene que ser un bash
shell, pero sí tiene que ser un shell de inicio de sesión (y muchas bash
instancias de shell no son shells de inicio de sesión ).
- Un
bash
shell es un shell donde está el programa de shell que lo proporciona bash
, en lugar de algún otro programa, como dash
.
- Un shell de inicio de sesión es un shell que se inicia automáticamente como consecuencia del inicio de sesión, para proporcionar la interfaz de usuario (gráfica o línea de comandos) para el inicio de sesión. Cuando se sale de un shell de inicio de sesión, el inicio de sesión finaliza.
Por lo tanto, colocar una recomendación que anexe entradas PATH
en un bashrc
archivo:
No haga nada cuando el caparazón no bash
lo sea, lo cual suele ser el caso. Por ejemplo, PATH
no se modificaría cuando esté en una sesión de inicio de sesión gráfica. Recuerde, PATH
no solo lo usan los programas de línea de comandos.
Añádalo una y otra vez en presencia de bash
conchas anidadas . Entonces, si inicia un shell dentro de un shell, que es muy común, por una variedad de razones, entonces tendrá varias ~/bin
entradas apiladas en su PATH
. Esto hace que la PATH
variable de entorno sea difícil de leer y, a veces, también disminuye el rendimiento.
Estos serían indeseables. Por lo tanto, sería un error poner esto en un bashrc
archivo; en realidad pertenece ~/.profile
. ~/.profile
es el lugar adecuado para:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Los shells sin inicio de sesión tienen shells de inicio de sesión (o algo que se comporta como un shell de inicio de sesión) como su padre, y heredan la mayoría de sus variables de entorno, incluido PATH
, desde este shell de inicio de sesión. Por lo tanto, colocar comandos de modificación de ruta ~/.profile
requiere que cierre la sesión y vuelva a iniciarla para que sean efectivos, pero también afecta el entorno de los shells sin inicio de sesión (así como el entorno de los programas que no son shells, ya que cada programa obtiene su propio conjunto de variables de entorno, denominado "entorno", heredado de su proceso padre).