¿Cuál es la diferencia entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc...?

¿Cuál es la diferencia entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc...?

Respuestas a las preguntas sobreENTONCESypreguntabuntu, junto con hurgar (y leer los encabezados de) $HOMEy /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 $HOMEson específicos del usuario. También deduzco que .profilese carga al iniciar sesión, mientras que .bashrcse carga cuando /bin/bashse ejecuta. También entiendo que diferentes programas tienen diferentes archivos de configuración (por ejemplo, .Rprofilepara R). Pero agradecería alguna aclaración:

  • ¿Son los archivos *rcy *profilefundamentalmente 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, .bashrcsobrescribe 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 , Ry 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.bashscreenespecí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:

  • *rcy *profileno 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/profileand .profile, que puede ser utilizada por varios shells diferentes (incluido al menos shand bash). 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 .inputrcreadline 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, elbashmanualpara bash. Una convención general en la que normalmente puede confiar es que la configuración del usuario $HOMEanula 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 /etcy $HOME.

Unix es un sistema operativo multiusuario, esto significa que muchas personas diferentes pueden usar un sistema, ya sea usando ssh, telneto 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, basho 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:

.bashrces un script de shell que Bash ejecuta cada vez que se inicia de forma interactiva.

Contraste .bash_profiley .profileque sólo se ejecutan al inicio de un nuevo shell de inicio de sesión. (golpe -l)

Usted elige si un comando ingresa .bashrco no .bash_profiledependiendo de si desea que se ejecute una vez o para cada inicio del shell interactivo.

información relacionada