"Un shell de inicio de sesión interactivo se inicia después de un inicio de sesión exitoso, utilizando / bin / login, leyendo el archivo / etc / passwd. Esta invocación de shell normalmente lee / etc / profile y su equivalente privado ~ / .bash_profile al inicio.
Un shell interactivo sin inicio de sesión normalmente se inicia en la línea de comandos utilizando un programa de shell (por ejemplo, [prompt] $ / bin / bash) o mediante el comando / bin / su. También se inicia un shell interactivo sin inicio de sesión con un programa de terminal como xterm o konsole desde un entorno gráfico. Este tipo de invocación de shell normalmente copia el entorno principal y luego lee el archivo ~ / .bashrc del usuario para obtener instrucciones adicionales de configuración de inicio. "
Http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
Por lo tanto, no pondría las variables de entorno en bashrc, porque no solo va en contra de una convención común, sino que también extrañará sus variables de bashrc al invocar un terminal desde un entorno gráfico de escritorio.
En Redhat en el /etc/profileencontré este comentario:
"Las funciones y los alias de todo el sistema deben ir en / etc / bashrc. Las variables de entorno personal y los programas de inicio deben ir a ~ / .bash_profile. Las funciones y los alias personales deben ir a ~ / .bashrc".
Entonces, si desea establecer variables de entorno en función del usuario, hágalo en el archivo .bash_profile del usuario.
Dirigiéndome a la .bash_profileleí:
"Variables de entorno personal y programas de inicio.
Los alias y funciones personales deben ir en ~ / .bashrc. Las variables de entorno de todo el sistema y los programas de inicio están en / etc / profile. Los alias y funciones de todo el sistema están en / etc / bashrc ".
Conclusión
Si solo desea que la raíz vea los programas que residen, por ejemplo, en / sbinagregaría esa ruta al .bash_profilearchivo raíz . Pero si desea que cada usuario pueda ver lo que la raíz programas específicos están instalados en su caja me gustaría poner /sbinen /etc/.profile. Ahora cada usuario puede usar la finalización de pestañas para buscar programas específicos de raíz y elevar los derechos si es necesario.
Caso especial: SSH
Cuando se inicia ssh con una línea de comandos, se inicia un shell de inicio de sesión interactivo. Pero en este caso /etc/profileno se lee. Cuando definí variables de entorno en el .bash_profilearchivo de cada usuario, funcionó con ssh.
~/.profilees otra opción válida también