GNU/Linux >> Tutoriales Linux >  >> Linux

¿La diferencia entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc...?

Respuestas a las preguntas sobre SO y askubuntu, además de leer (y leer los encabezados de) $HOME y /etc/ , indique una cantidad de archivos que se pueden usar para establecer variables de entorno, incluidos:

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

Reúno esos archivos en /etc/ funciona para todos los usuarios mientras que los archivos en $HOME son específicos del usuario. También deduzco que .profile se carga al iniciar sesión mientras que .bashrc cargado cuando /bin/bash es ejecutado. 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 *profile archivos 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

  • “¿Cómo acceder a una variable de entorno bash desde R en emacs-ess?”
  • "¿Diferencia entre iniciar una aplicación desde un atajo de teclado y el terminal?"

Respuesta aceptada:

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 configuración" global ni un comité que decrete una sintaxis común u otras generalizaciones agradables y limpias como las que está buscando. Solo hay una multitud de aplicaciones separadas como R , bash , screen y el entorno de escritorio GNOME, todos los cuales tienen sus propias formas de hacer las cosas, por lo que debe consultar la documentación de cada programa individual para responder a cualquier pregunta específica. preguntas sobre un archivo en particular. Si parece ad-hoc, es porque lo es:la mayor parte del software de Unix/Linux fue desarrollado para diferentes propósitos por diferentes personas que realizaron la configuración de forma ligeramente diferente.

Para responder a sus otras preguntas puntualmente:

  • *rc y *profile no significan mucho, por lo que esta pregunta realmente no puede ser respondida. “rc” es simplemente una abreviatura o un sufijo de uso común para los archivos de configuración. Su etimología se remonta a la antigüedad (en los años de la informática), y probablemente signifique ejecutar comandos (de 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 utilizado por múltiples shells diferentes (incluyendo al menos sh y bash ). 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 para readline y .gtkrc* para GTK, que afectará 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, bash manual para bash . Una convención general en la que normalmente puede confiar es que la configuración del usuario en $HOME anular la configuración de todo el sistema en /etc . Esto normalmente 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 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 tal "clase" es discutible. Nuevamente, consulte la documentación del programa específico que está utilizando.

Relacionado:¿Fusionar carpetas con mv?
Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Centos:¿cuál es la diferencia entre /usr/lib/systemd/system y /etc/systemd/system?

  3. ¿Cómo se actualiza /etc/motd?

  4. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  5. /etc/passwd muestra al usuario en un grupo, pero /etc/group no

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Diferencia entre /etc/crontab y crontab -e

¿Cuál es la conexión entre los directorios /etc/init.d y /etc/rcX.d en Linux?

¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?