Respuestas a las preguntas sobreENTONCESypreguntabuntu, junto con hurgar (y leer los encabezados de) $HOME
y /etc/
, indican una cantidad de archivos que se pueden usar para configurar variables de entorno, que incluyen:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Recojo que los archivos /etc/
funcionan 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 .bashrc
se 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 los archivos
*rc
y*profile
fundamentalmente diferentes? - ¿Cuál es el alcance de dichos archivos (por ejemplo, qué archivos se usan comúnmente con Linux)?
- ¿Existe una jerarquía (por ejemplo,
.bashrc
sobrescribe las variables establecidas en.settings
)? - ¿Cuál es una buena referencia para esta clase de archivos? ¿Para las opciones en estos archivos?
Preguntas vinculadas
Respuesta1
La organización de los archivos de configuración es mucho menos uniforme de lo que parecen implicar sus preguntas. No hay "clase", no hay "jerarquía" y no hay un "zar de la configuración" global ni un comité que decrete una sintaxis común u otras generalizaciones limpias y agradables como las que usted está buscando. Sólo existe una multitud de aplicaciones independientes como , R
y el entorno de escritorio GNOME, cada una de las cuales tiene sus propias formas de hacer las cosas, por lo que debe consultar la documentación de cada programa individual para responder a cualquier pregunta.bash
screen
específicopreguntas sobre un archivo en particular. Si parece ad-hoc, es porque lo es: la mayor parte del software Unix/Linux que existe fue desarrollado para diferentes propósitos por diferentes personas que realizaron la configuración de manera ligeramente diferente.
Para responder puntualmente a sus otras preguntas:
*rc
y*profile
no significan mucho, por lo que esta pregunta realmente no puede responderse. "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 los años de las computadoras) y probablemente significa ejecutar comandos (deruncom). El hecho de que las aplicaciones utilicen la misma palabra no significa que coincidan en las convenciones. "perfil" es un sufijo mucho menos común.Defina "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
and.profile
, que puede ser utilizada por varios shells diferentes (incluido al menossh
andbash
). Hay algo llamadoambienteasociado a cada proceso en ejecución que puede contener variables que pueden afectar el comportamiento de dicho proceso. Generalmente, 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 utilicen 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
manualparabash
. Una convención general en la que normalmente puede confiar es que la configuración del usuario$HOME
anula la configuración de todo el sistema en/etc
. Por lo general, esto se logra leyendo el archivo del usuario después del 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 existe 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.
Respuesta2
Creo que esta pregunta es demasiado amplia en muchos niveles, por ejemplo, estás haciendo preguntas sobre al menoscuatrodiferentes programas en una sola pregunta. Sólo miraré la diferencia entre los archivos de configuración en /etc
y $HOME
.
Unix es un sistema operativo multiusuario, esto significa que muchas personas diferentes pueden usar un sistema, ya sea usando ssh
, telnet
o Xorg
. Para proporcionar una configuración estandarizada para sus usuarios, puede proporcionar una configuración para todo el sistema en /etc/
, que normalmente también la utiliza su distribución para proporcionar una configuración global para, por ejemplo, bash
o screen
.
Por otro lado, algunos usuarios quieren personalizar la configuración de sus programas por su cuenta, 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 para todo el sistema, mientras que los archivos de configuración en $HOME permiten a los usuarios cambiar/anular la configuración para todo el sistema.
Respuesta3
Parte de la respuesta proviene deesta 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 sólo se ejecutan al inicio de un nuevo shell de inicio de sesión. (golpe -l)
Usted elige si un comando ingresa .bashrc
o no .bash_profile
dependiendo de si desea que se ejecute una vez o para cada inicio del shell interactivo.