Antworten auf die Fragen zuALSOUndAbonnieren, sowie das Durchsuchen (und Lesen der Header von) $HOME
und /etc/
geben eine Reihe von Dateien an, die zum Festlegen von Umgebungsvariablen verwendet werden können, darunter:
~/.profile
~/.bashrc
~/.bash_profile
~/.gnomerc
~/.Rprofile
/etc/bash_bashrc
/etc/profile
/etc/screenrc
Ich nehme an, dass die Dateien in /etc/
für alle Benutzer funktionieren, während die Dateien in $HOME
benutzerspezifisch sind. Ich nehme auch an, dass .profile
sie beim Anmelden geladen werden, während .bashrc
sie beim Ausführen geladen werden /bin/bash
. Ich verstehe auch, dass verschiedene Programme unterschiedliche Einstellungsdateien haben (z. B. .Rprofile
für R). Aber ich wäre für eine Klarstellung dankbar:
- Sind
*rc
und*profile
Dateien grundsätzlich verschieden? - Welchen Umfang haben solche Dateien (z. B. welche Dateien werden häufig unter Linux verwendet)
- Gibt es eine Hierarchie (zB
.bashrc
überschreibt Variablen die in gesetzt sind.settings
) - Was ist eine gute Referenz für diese Dateiklasse? Für die Optionen in diesen Dateien?
Verknüpfte Fragen
Antwort1
Die Organisation der Konfigurationsdateien ist viel weniger einheitlich, als Ihre Fragen zu suggerieren scheinen. Es gibt keine „Klasse“, keine „Hierarchie“ und keinen globalen „Konfigurationszaren“ oder Ausschuss, der eine gemeinsame Syntax oder andere schöne, saubere Verallgemeinerungen wie die, die Sie suchen, verordnet. Es gibt nur eine Vielzahl separater Anwendungen wie R
, und die GNOME-Desktopumgebung, die alle ihre eigenen Vorgehensweisen haben, daher sollten Sie sich die Dokumentation für jedes einzelne Programm ansehen, um alle Fragen zu beantworten bash
.screen
SpezifischFragen zu einer bestimmten Datei. Wenn es ad hoc erscheint, liegt das daran, dass es das auch ist: Die meiste Unix-/Linux-Software wurde für unterschiedliche Zwecke von unterschiedlichen Leuten entwickelt, die alle etwas anders an die Konfiguration herangegangen 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 häufig verwendete Abkürzung oder ein Suffix für Konfigurationsdateien. Seine Etymologie geht auf die Antike zurück (in Computerjahren) und bedeutet wahrscheinlich "Befehle ausführen" (vonlaufcom). Nur weil Anwendungen das gleiche Wort verwenden, heißt das nicht, dass sie sich in Konventionen einig sind. „Profil“ ist ein viel weniger gebräuchliches Suffix.Definieren Sie „Bereich“. Die meisten Anwendungen teilen keine Konfigurationsdateien mit anderen, nicht verwandten Anwendungen. Die einzige mögliche Ausnahme sind
/etc/profile
und.profile
, die von mehreren verschiedenen Shells verwendet werden können (darunter mindestenssh
undbash
). Es gibt etwas, das alsUmfeldmit jedem laufenden Prozess verknüpft, der Variablen enthalten kann, die das Verhalten des besagten Prozesses beeinflussen können. Im Allgemeinen werden Umgebungsvariablen durch die entsprechenden Shell-Konfigurationsdateien oder möglicherweise durch die Konfigurationsdateien der von Ihnen verwendeten grafischen Desktopumgebung festgelegt. Es gibt auch Konfigurationsdateien für „Bibliotheken“, wie.inputrc
für Readline und.gtkrc*
GTK, die sich auf jede Anwendung auswirken, die die Bibliothek verwendet.Nein, es gibt keine globale Hierarchie für Konfigurationsdateien. Lesen Sie auch hier die Dokumentation des jeweiligen Programms, z. B. die
bash
Handbuchfürbash
. Eine allgemeine Konvention, auf die Sie sich normalerweise verlassen können, ist, dass Benutzereinstellungen in die$HOME
systemweite Konfiguration in überschreiben/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 für endgültige Antworten sollten Sie die Dokumentation des von Ihnen verwendeten Programms zu Rate ziehen.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“ hinfällig. Lesen Sie auch hier die Dokumentation des jeweiligen Programms, das Sie verwenden.
Antwort2
Ich denke, diese Frage ist auf so vielen Ebenen zu weit gefasst, z. B. stellen Sie Fragen zu mindestensvierverschiedene Programme in einer Frage. Ich werde mir nur den Unterschied zwischen den Konfigurationsdateien in /etc
und ansehen $HOME
.
Unix ist ein Mehrbenutzer-Betriebssystem, d. h. viele verschiedene Personen können ein System verwenden, entweder mithilfe von ssh
, telnet
, oder Xorg
. Um Ihren Benutzern eine standardisierte Konfiguration bereitzustellen, können Sie eine systemweite Konfiguration in bereitstellen /etc/
. Dies wird normalerweise auch von Ihrer Distribution verwendet, um eine globale Konfiguration für z. B. bash
oder bereitzustellen screen
.
Andererseits möchten manche Benutzer die Einstellungen ihrer Programme selbst anpassen, wie etwa Tastenkombinationen, Farben oder das Aussehen. Dies geschieht über die Konfigurationsdatei in ihrem $HOME
. Kurz gesagt /etc/
bietet es eine systemweite Konfiguration, während die Konfigurationsdateien in $HOME es Benutzern ermöglichen, die systemweite Konfiguration zu ändern/zu überschreiben.
Antwort3
Ein Teil der Antwort kommt vondieser Beitrag:
.bashrc
ist ein Shell-Skript, das Bash ausführt, wenn es interaktiv gestartet wird.
Im Gegensatz .bash_profile
dazu .profile
werden sie nur beim Start einer neuen Login-Shell ausgeführt. (bash -l)
Sie wählen, ob ein Befehl eingegeben wird .bashrc
, .bash_profile
je nachdem, ob er einmal oder bei jedem Start der interaktiven Shell ausgeführt werden soll.