Was ist eine .bashrc-Datei und was macht sie?

21

Ich kann anscheinend keine klaren Informationen darüber finden, was die .bashrcDatei ist und was sie genau tut.


Vielen Dank für die bisherige Hilfe. Es sieht so aus, als ob dieses Skript alles erledigt, angefangen von Färbung, Vervollständigung, Aliasnamen und Shell-Verlauf usw. Gibt es irgendetwas, das nicht nützlich zu sein scheint?

Justin
quelle
4
.bashrcist eine der vielen Bash-Konfigurationsdateien. Weitere Informationen finden Sie in der offiziellen Dokumentation zu Bash-Startdateien .
Muru

Antworten:

21

Die .bashrcDatei ist ein Skript, das ausgeführt wird, wenn eine neue Terminalsitzung im interaktiven Modus gestartet wird . Dies geschieht, wenn Sie ein neues Terminalfenster durch Drücken von Ctrl+ Alt+ Töffnen oder einfach eine neue Terminalregisterkarte öffnen.

Im Gegensatz dazu werden Sie in einer Terminalsitzung im Anmeldemodus nach Benutzername und Kennwort gefragt und das ~/.bash_profileSkript ausgeführt. Dies geschieht beispielsweise, wenn Sie sich über SSH bei einem Remote-System anmelden.

Die .bashrcDatei selbst enthält eine Reihe von Konfigurationen für die Terminalsitzung. Dies beinhaltet das Einrichten oder Aktivieren von: Färbung, Vervollständigung, Shell-Verlauf, Befehls-Aliase und mehr. Die .bashrcmit Ubuntu gelieferte Datei ist gut kommentiert und Sie können die meisten Funktionen verstehen, wenn Sie sie nur lesen.

Sie können .bashrcnach Ihren Wünschen anpassen. Hier erhalten Sie ein Beispiel mit vielen zusätzlichen Funktionen.

Luís de Sousa
quelle
Die Verbindung ist unterbrochen.
Rab
1
Der Link funktioniert.
Luís de Sousa
Auf dieser Seite funktioniert das Herunterladen der Datei nicht.
Rab
1
Sowohl der Link als auch der Download funktionieren einwandfrei
M. Becerra
5

Frage zum Superuser - Was ist die .bashrc-Datei? von @pineapple und beantwortet von @DigitalRoss

Eigentlich ist es bashgenau das, was liest .bashrc(und /etc/bash.bashrc). Es gibt viele verschiedene Muscheln.

Die Bash-Manpage (von Brian Fox und Chet Ramey; auch Infoseite "Bash Startup Files" ) ist die maßgebliche Referenz:

Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest bash Befehle und führt sie aus ~/.bashrc, sofern diese Datei vorhanden ist. Dies kann durch Verwendung der --norcOption verhindert werden. Die --rcfileDateioption erzwingt, dass Bash Befehle aus der Datei liest und ausführt, anstatt ~/.bashrc.

Wenn bash nicht interaktiv gestartet wird, um beispielsweise ein Shell-Skript auszuführen, sucht es nach der Variablen BASH_ENVin der Umgebung, erweitert ihren Wert, wenn sie dort angezeigt wird, und verwendet den erweiterten Wert als Namen einer Datei, die gelesen und ausgeführt werden soll. Bash verhält sich so, als ob der folgende Befehl ausgeführt wurde:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

Der Wert der PATHVariablen wird jedoch nicht für die Suche nach dem Dateinamen verwendet.

Die Datei ist nur Shell-Befehle. Es wird normalerweise verwendet, um Eingabeaufforderungen zu ändern, Umgebungsvariablen festzulegen und Shell-Prozeduren zu definieren. Traditionell wird die Datei .profilefür diesen Zweck verwendet, bashhat jedoch so viele Erweiterungen, dass sie eine eigene Startdatei für Benutzer benötigt, die Bashismen in Startdateien einfügen möchten .

" Keine Anmelde-Shell " bedeutet Dinge wie Skriptstarts und normalerweise Terminalfenster, die von Fenstermanagern gestartet werden. Manchmal stelle ich * nix - Systeme haben bis .bashrcund BASH_ENVnur Quelle .profile. Solange Sie sich nicht von POSIX-Shell-Befehlen entfernen, erhalten Sie in jeder Shell dieselbe Initialisierung.

Es ist besonders wertvoll, wenn shes wirklich ist bash, was manchmal passiert. Verwenden Sie dazu:

. .profile

Ein Grund, warum dies alles so komplex ist, ist, dass Benutzer manchmal Dinge, die eine Ausgabe erzeugen, in Shell-Startdateien ablegen oder bedingungslos Eingabeaufforderungen festlegen. Dies verursacht viele Probleme beim Ausführen von Shell-Programmen und Backtick-Befehlen innerhalb von Sprachen, ganz zu schweigen system(3)von C-Programmen. bashIch denke, die Art und Weise, wie das System gestartet wird, ist so konzipiert, dass eine Datei mit den Einstellungen für Ausgabe und Eingabeaufforderung in Ordnung ist und eine Datei, in der dies nicht der Fall ist. Herkömmlicherweise wird ein Laufzeit-Test durchgeführt, um die Interaktivität zu unterscheiden, z. B. um zu überprüfen, ob die Eingabeaufforderung festgelegt ist.

αғsнιη
quelle