Antworten auf die Fragen zu SO und askubuntu sowie das Durchsuchen (und Lesen der Überschriften 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 sammle diese Dateien in /etc/
Arbeit für alle Benutzer, während Dateien in $HOME
benutzerspezifisch sind. Ich erfahre auch, dass .profile
bei der Anmeldung .bashrc
geladen /bin/bash
wird, während geladen, wenn ausgeführt wird. Ich verstehe auch, dass verschiedene Programme unterschiedliche Einstellungsdateien haben (zB .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 (zB
.bashrc
überschreibt die eingestellten Variablen.settings
) - Was ist eine gute Referenz für diese Dateiklasse? Für die Optionen in diesen Dateien?
INVOCATION
Abschnitt inman bash
. Siehe denFHS
Wiki-Artikel über Linux-Dateisysteme. Das gibt Ihnen einen guten Start und beantwortet ein paar dieser Fragen. Dateien mit einem vorangestellten Punkt (.
) sind normalerweise benutzerspezifisch - sie befinden sich im Benutzerverzeichnis$HOME
.Antworten:
Die Organisation der Konfigurationsdateien ist viel weniger einheitlich, als Ihre Fragen zu implizieren scheinen. Es gibt keine "Klasse", es gibt keine "Hierarchie" und es gibt keinen globalen "Konfigurationszar" oder ein Komitee, das eine gemeinsame Syntax oder andere nette, saubere Verallgemeinerungen, wie die, die Sie suchen, festlegt. Es gibt nur eine Vielzahl von separaten Anwendungen wie
R
,bash
,screen
und die GNOME - Desktop - Umgebung, die alle ihre eigenen Wege haben , Dinge zu tun, so dass Sie in der Dokumentation aussehen sollte für jedes einzelne Programm alle beantworten spezifische Fragen zu einer bestimmten Datei. Wenn es ad-hoc zu sein scheint, liegt das daran, dass die meisten Unix / Linux-Programme für verschiedene Zwecke von verschiedenen Leuten entwickelt wurden, die alle etwas anders konfiguriert haben.So beantworten Sie Ihre anderen Fragen gezielt:
*rc
und*profile
bedeuten nicht sehr viel, so dass diese Frage nicht wirklich beantwortet werden kann. "rc" ist lediglich eine häufig verwendete Abkürzung oder ein Suffix für Konfigurationsdateien. Seine Etymologie reicht bis in die Antike (in Computerjahren) zurück und bedeutet wahrscheinlich Ausführen von Befehlen (von runcom ). Nur weil Anwendungen dasselbe Wort verwenden, heißt das nicht, dass sie sich auf Konventionen einigen. "profile" ist ein viel selteneres Suffix.Definieren Sie "Umfang". Die meisten Anwendungen teilen keine Konfigurationsdateien mit anderen nicht verwandten Anwendungen. Die eine 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 sich auf das Verhalten des Prozesses auswirken können. Im Allgemeinen werden Umgebungsvariablen von den entsprechenden Shell-Konfigurationsdateien oder möglicherweise von den Konfigurationsdateien der verwendeten grafischen Desktop-Umgebung festgelegt. Es gibt auch Konfigurationsdateien für "Bibliotheken", wie.inputrc
zum Beispiel für readline und.gtkrc*
für GTK, die sich auf jede Anwendung auswirken, die die Bibliothek verwendet.Nein, es gibt keine globale Hierarchie für Konfigurationsdateien. Weitere Informationen finden Sie in der Dokumentation des jeweiligen Programms, z. B. im
bash
Handbuch fürbash
. Eine allgemeine Konvention, auf die Sie sich normalerweise verlassen können, ist, dass Benutzereinstellungen$HOME
die 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 endgültige Antworten finden Sie in der Dokumentation des jeweiligen Programms, das Sie verwenden.Es gibt keine "Klasse", zumindest keine, die allgemein genug ist, um alle Dateien zu erfassen, die Sie in Ihrer Frage aufgelistet haben. Daher ist die Frage nach einem Verweis für eine solche "Klasse" umstritten. Weitere Informationen finden Sie in der Dokumentation des von Ihnen verwendeten Programms.
quelle
Ich denke, diese Frage ist auf so vielen Ebenen zu weit gefasst. Sie stellen beispielsweise Fragen zu mindestens vier verschiedenen Programmen in einer Frage. Ich werde nur den Unterschied zwischen den Konfigurationsdateien in
/etc
und betrachten$HOME
.Unix ist ein Multi-User - Betriebssystem bedeutet dies viele verschiedene Personen ein System verwenden können, entweder durch die Verwendung
ssh
,telnet
oderXorg
. Um eine standardisierte Konfiguration für Ihre Benutzer bereitzustellen, können Sie eine systemweite Konfiguration in bereitstellen./etc/
Diese wird normalerweise auch von Ihrer Distribution verwendet, um eine globale Konfiguration für z . B.bash
oder bereitzustellenscreen
.Auf der anderen Seite möchten einige Benutzer die Einstellungen für ihre Programme wie Tastenkombinationen, Farben oder Aussehen selbst anpassen. Dies geschieht über die Konfigurationsdatei in deren
$HOME
. Kurz gesagt:/etc/
Bietet eine systemweite Konfiguration, während die Konfigurationsdateien in $ HOME Benutzern das Ändern / Überschreiben der systemweiten Konfiguration ermöglichen.quelle
Ein Teil der Antwort stammt aus diesem Beitrag :
.bashrc
ist ein Shell-Skript, das Bash immer dann ausführt, wenn es interaktiv gestartet wird.Contrast
.bash_profile
und.profile
die nur zu Beginn einer neuen Login-Shell ausgeführt werden. (bash -l)Sie wählen, ob ein Befehl in
.bashrc
vs eingeht,.bash_profile
je nachdem, ob er einmal oder bei jedem Start der interaktiven Shell ausgeführt werden soll.quelle