Was ist der Unterschied zwischen /etc/bash.bashrc und ~ / .bashrc? Welches soll ich verwenden?

20

Wann sollte ich jede der beiden .bashrc-Dateien verwenden, um meine Aliase, Eingabeaufforderungen usw. festzulegen?

cfischer
quelle

Antworten:

34

/etc/bash.bashrc gilt für alle Benutzer

~/.bashrc Gilt nur für den Benutzer, in dem es sich befindet.

Loïc Wolff
quelle
3
Und die Antwort von dex impliziert Folgendes: Verwenden Sie in allen Fällen Ihr lokales ~ / .bashrc, es sei denn, Sie möchten Ihren Willen jedem aufzwingen, der diese Maschine verwendet.
Dacracot
Genau genommen erzwingen Sie nichts in /etc/bash.bashrc, da Benutzer es jederzeit in ihrem eigenen ~ / .bashrc
Kim,
... außer wenn sich jemand entscheidet, alle Variablen readonlyin /etc/bash.bashrc: \
grawity 01.10.09
1
Unter Ubuntu muss diese Datei, wie am Anfang kommentiert, aus der Datei / etc / profile "bezogen" werden. Ich habe einen Alias-Befehl am Ende der Datei /etc/bash.bashrc hinzugefügt und den Befehl "source /etc/bash.bashrc" am Ende der Datei / etc / profile angehängt. Klappt wunderbar.
jfmessier
2

Laut der GNU Bash-Dokumentation :

Wenn Bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt , sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei sucht sie in dieser Reihenfolge nach ~ / .bash_profile , ~ / .bash_login und ~ / .profile und liest und führt Befehle von der ersten Datei aus, die vorhanden und lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu unterbinden.

Als interaktive Shell ohne Anmeldung aufgerufen Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest Bash Befehle von ~ / .bashrc und führt sie aus , sofern diese Datei vorhanden ist. Dies kann mit der Option --norc verhindert werden. Die Option --rcfile file zwingt Bash, anstelle von ~ / .bashrc Befehle aus der Datei zu lesen und auszuführen.

Normalerweise enthält Ihr ~ / .bash_profile die Zeile

if [-f ~ / .bashrc]; dann . ~ / .bashrc; fi

nach (oder vor) Login-spezifischen Initialisierungen.

Felipe Alvarez
quelle
1
Nicht wirklich. Sehen Sie sich diese Datei git.savannah.gnu.org/cgit/bash.git/tree/shell.c in der Funktion run_startup_files () an, in der SYS_BASHRC verwendet wird, definiert in git.savannah.gnu.org/cgit/bash.git/ tree / config-top.h
mloskot
1

Verwenden Sie für Ihre persönlichen Einstellungen und persönlichen Skripte oder Bash-Funktionen .bashrc (Aliase, Bash-Funktionen hinzugefügt ...)

In dem Moment, in dem Sie etwas für alle Benutzer (oder die meisten Benutzer) oder für allgemeine Zwecke (Pfad für gemeinsam genutzte ausführbare Dateien, Pfad für Dokumentation ...) freigeben möchten, legen Sie es in /etc/bash.bashrc ab

Ich sagte, die meisten Benutzer, weil sogar sagen wir, Sie geben ein Skript greetings.sh an, das "Hello world!"für alle Benutzer gedruckt wird , aber Benutzer Pepe möchte stattdessen das Skript greetings.sh verwenden, das gedruckt wird "Hola el mundo!". Er kann seinen Pfad in seiner .bashrc-Datei so ändern, dass er auf sein Skript anstatt auf Ihr Skript verweist. Mit anderen Worten, der Benutzer kann seine Sitzung in .bashrc jederzeit nach seinen Wünschen anpassen.

Debugger
quelle