Was ist der Unterschied zwischen ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc ...?

Was ist der Unterschied zwischen ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc ...?

Antworten auf die Fragen zuALSOUndAbonnieren, sowie das Durchsuchen (und Lesen der Header von) $HOMEund /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 $HOMEbenutzerspezifisch sind. Ich nehme auch an, dass .profilesie beim Anmelden geladen werden, während .bashrcsie beim Ausführen geladen werden /bin/bash. Ich verstehe auch, dass verschiedene Programme unterschiedliche Einstellungsdateien haben (z. B. .Rprofilefür R). Aber ich wäre für eine Klarstellung dankbar:

  • Sind *rcund *profileDateien 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.screenSpezifischFragen 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:

  • *rcund *profilebedeuten 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/profileund .profile, die von mehreren verschiedenen Shells verwendet werden können (darunter mindestens shund bash). 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 .inputrcfü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. diebashHandbuchfür bash. Eine allgemeine Konvention, auf die Sie sich normalerweise verlassen können, ist, dass Benutzereinstellungen in die $HOMEsystemweite 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 /etcund 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. bashoder 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:

.bashrcist ein Shell-Skript, das Bash ausführt, wenn es interaktiv gestartet wird.

Im Gegensatz .bash_profiledazu .profilewerden sie nur beim Start einer neuen Login-Shell ausgeführt. (bash -l)

Sie wählen, ob ein Befehl eingegeben wird .bashrc, .bash_profileje nachdem, ob er einmal oder bei jedem Start der interaktiven Shell ausgeführt werden soll.

verwandte Informationen