Antworten auf die Fragen zu SO und Askubuntu, zusammen mit dem Stöbern (und Lesen der Header von) $HOME
und /etc/
, geben eine Reihe von Dateien an, die zum Setzen von Umgebungsvariablen verwendet werden können, darunter:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Ich sammle diese Dateien in /etc/
für alle Benutzer funktionieren, während Dateien in $HOME
sind benutzerspezifisch. Ich sammle auch das .profile
wird beim Login geladen, wohingegen .bashrc
geladen, wenn /bin/bash
wird ausgeführt. Ich verstehe auch, dass verschiedene Programme unterschiedliche Einstellungsdateien haben (z. B. .Rprofile
für R). Aber ich würde mich über eine Klarstellung freuen:
- Sind
*rc
und*profile
Dateien grundlegend anders? - Welchen Umfang haben solche Dateien (z. B. welche Dateien werden üblicherweise unter Linux verwendet)
- Gibt es eine Hierarchie (z.B.
.bashrc
überschreibt Variablen, die in.settings
gesetzt sind ) - Was ist eine gute Referenz für diese Dateiklasse? Für die Optionen in diesen Dateien?
Verknüpfte Fragen
- „Wie greife ich in emacs-ess auf eine Bash-Umgebungsvariable innerhalb von R zu?“
- „Unterschied zwischen dem Starten einer Anwendung über eine Tastenkombination und dem Terminal?“
Akzeptierte Antwort:
Die Organisation von Konfigurationsdateien ist viel weniger einheitlich, als Ihre Fragen vermuten lassen. Es gibt keine „Klasse“, es gibt keine „Hierarchie“ und es gibt keinen globalen „Konfigurationszaren“ oder Ausschuss, der eine gemeinsame Syntax oder andere schöne, saubere Verallgemeinerungen wie die, die Sie suchen, erlässt. Es gibt nur eine Vielzahl separater Anwendungen wie R
, bash
, screen
und die GNOME-Desktop-Umgebung, die alle ihre eigenen Vorgehensweisen haben, daher sollten Sie sich die Dokumentation für jedes einzelne Programm ansehen, um spezifische Antworten zu finden Fragen zu einer bestimmten Datei. Wenn es ad-hoc erscheint, liegt das daran, dass die meiste Unix-/Linux-Software da draußen für unterschiedliche Zwecke von verschiedenen Leuten entwickelt wurde, die alle etwas anders mit der Konfiguration umgegangen sind.
Um Ihre anderen Fragen punktuell zu beantworten:
-
*rc
und*profile
bedeuten nicht viel, daher kann diese Frage nicht wirklich beantwortet werden. „rc“ ist lediglich eine gebräuchliche Abkürzung oder ein Suffix für Konfigurationsdateien. Seine Etymologie reicht bis in die Antike (in Computerjahre) zurück und bedeutet wahrscheinlich Befehle ausführen (von runcom). Nur weil Anwendungen dasselbe Wort verwenden, heißt das nicht, dass sie sich auf Konventionen einigen. „Profil“ ist ein viel selteneres Suffix. -
Definiere „Geltungsbereich“. Die meisten Anwendungen teilen keine Konfigurationsdateien mit anderen nicht verwandten Anwendungen. Die einzige mögliche Ausnahme ist
/etc/profile
und.profile
, die von mehreren verschiedenen Shells verwendet werden kann (einschließlich mindestenssh
undbash
). Jedem laufenden Prozess ist eine sogenannte Umgebung zugeordnet, die Variablen enthalten kann, die das Verhalten des Prozesses beeinflussen können. Im Allgemeinen werden Umgebungsvariablen durch die entsprechenden Shell-Konfigurationsdateien oder vielleicht die Konfigurationsdateien der von Ihnen verwendeten grafischen Desktop-Umgebung gesetzt. Es gibt auch Konfigurationsdateien für „Bibliotheken“, wie.inputrc
für readline und.gtkrc*
für GTK, die jede Anwendung betrifft, die die Bibliothek verwendet. -
Nein, es gibt keine globale Hierarchie für Konfigurationsdateien. Siehe auch hier die Dokumentation für das betreffende Programm, zum Beispiel
bash
Handbuch fürbash
. Eine allgemeine Konvention, auf die Sie sich normalerweise verlassen können, ist, dass Benutzereinstellungen in$HOME
Überschreiben Sie die systemweite Konfiguration in/etc
. Dies wird normalerweise erreicht, indem die Benutzerdatei nach der Systemdatei gelesen wird, sodass spätere Einstellungen frühere überschreiben. Dies ist jedoch keine Garantie, und endgültige Antworten finden Sie in der Dokumentation für das jeweilige Programm, das Sie verwenden. -
Es gibt keine „Klasse“, zumindest keine, die allgemein genug ist, um alle Dateien zu umfassen, die Sie in Ihrer Frage aufgelistet haben, daher ist die Frage nach einer Referenz für eine solche „Klasse“ strittig. Siehe auch hier die Dokumentation des spezifischen Programms, das Sie verwenden.