Las respuestas a las preguntas sobre SO y askubuntu , junto con el examen (y la lectura de encabezados de) $HOME
e /etc/
indican una cantidad de archivos que se pueden usar para establecer variables de entorno, que incluyen:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Reúno esos archivos en el /etc/
trabajo para todos los usuarios, mientras que los archivos $HOME
son específicos del usuario. También deduzco que .profile
se carga al iniciar sesión mientras que se .bashrc
carga cuando /bin/bash
se ejecuta. También entiendo que diferentes programas tienen diferentes archivos de configuración (por ejemplo, .Rprofile
para R). Pero agradecería alguna aclaración:
- ¿Son
*rc
y los*profile
archivos fundamentalmente diferentes? - ¿Cuál es el alcance de dichos archivos (por ejemplo, qué archivos se usan comúnmente con Linux)
- ¿Hay una jerarquía (por ejemplo,
.bashrc
sobrescribe las variables establecidas.settings
) - ¿Cuál es una buena referencia para esta clase de archivos? Para las opciones en estos archivos?
INVOCATION
sección enman bash
. Vea elFHS
artículo wiki sobre sistemas de archivos Linux. Eso le dará un buen comienzo y responderá algunas de estas preguntas. Los archivos con un punto (.
) anterior suelen ser específicos del usuario; residen en el$HOME
directorio del usuario .Respuestas:
La organización de los archivos de configuración es mucho menos uniforme de lo que parecen implicar sus preguntas. No hay una "clase", no hay una "jerarquía", y no hay un "zar de configuración" global ni un comité que decida una sintaxis común u otras generalizaciones limpias y agradables como las que está buscando. Sólo hay una multitud de aplicaciones separadas como
R
,bash
,screen
y el entorno de escritorio GNOME, todos los cuales tienen sus propias maneras de hacer las cosas, por lo que debe buscar en la documentación de cada programa individual para responder a cualquier específicas preguntas acerca de un archivo en particular. Si parece ad-hoc, es porque lo es: la mayoría del software Unix / Linux fue desarrollado para diferentes propósitos por diferentes personas que se dedicaron a la configuración de manera ligeramente diferente.Para responder a sus otras preguntas puntualmente:
*rc
y*profile
no significan mucho, por lo que esta pregunta realmente no se puede responder. "rc" es simplemente una abreviatura o sufijo comúnmente utilizado para archivos de configuración. Su etimología se remonta a la antigüedad (en años informáticos), y probablemente significa ejecutar comandos (desde runcom ). El hecho de que las aplicaciones usen la misma palabra no significa que estén de acuerdo con las convenciones. "perfil" es un sufijo mucho menos común.Definir "alcance". La mayoría de las aplicaciones no comparten archivos de configuración con otras aplicaciones no relacionadas. La única excepción posible es
/etc/profile
y.profile
, que puede ser utilizada por múltiples shells diferentes (incluyendo al menossh
ybash
). Hay algo llamado entorno asociado con cada proceso en ejecución que puede contener variables que pueden afectar el comportamiento de dicho proceso. En general, las variables de entorno se establecen mediante los archivos de configuración de shell apropiados, o quizás los archivos de configuración de cualquier entorno de escritorio gráfico que esté utilizando. También hay archivos de configuración para "bibliotecas", como.inputrc
readline y.gtkrc*
GTK, que afectarán a todas las aplicaciones que usan la biblioteca.No, no existe una jerarquía global para los archivos de configuración. Nuevamente, consulte la documentación del programa específico en cuestión, por ejemplo, el
bash
manual debash
. Una convención general en la que puede confiar es que la configuración del usuario$HOME
anula la configuración de todo el sistema/etc
. Esto se logra generalmente leyendo el archivo del usuario después del sistema, de modo que las configuraciones posteriores sobrescriban las anteriores. Sin embargo, esto no es una garantía, y para obtener respuestas definitivas, debe consultar la documentación del programa específico que está utilizando.No hay una "clase", al menos ninguna lo suficientemente general como para abarcar todos los archivos que ha enumerado en su pregunta, por lo que la cuestión de una referencia para dicha "clase" es discutible. Nuevamente, consulte la documentación del programa específico que está utilizando.
fuente
Creo que esta pregunta es demasiado amplia en muchos niveles, por ejemplo, está haciendo preguntas sobre al menos cuatro programas diferentes en una pregunta. Solo miraré la diferencia entre los archivos de configuración en
/etc
y$HOME
.Unix es un sistema operativo multi-usuario, esto significa que muchas personas diferentes pueden usar un sistema, ya sea mediante el uso de
ssh
,telnet
oXorg
. Para proporcionar una configuración estandarizada para sus usuarios, puede proporcionar una configuración de todo el sistema/etc/
, normalmente su Distribución también la utiliza para proporcionar una configuración global para, por ejemplo,bash
oscreen
.Por otro lado, algunos usuarios desean personalizar la configuración de sus programas por sí mismos, como combinaciones de teclas, colores o apariencia. Esto se hace a través del archivo de configuración en su
$HOME
. En resumen,/etc/
proporciona una configuración de todo el sistema, mientras que los archivos de configuración en $ HOME permiten a los usuarios cambiar / anular la configuración de todo el sistema.fuente
Parte de la respuesta proviene de esta publicación :
.bashrc
es un script de shell que Bash ejecuta cada vez que se inicia de forma interactiva.Contraste
.bash_profile
y.profile
que solo se ejecutan al comienzo de un nuevo shell de inicio de sesión. (bash -l)Usted elige si un comando va en
.bashrc
contra.bash_profile
dependiendo de si desea que se ejecute una vez o para cada inicio shell interactivo.fuente