GNU/Linux >> LINUX-Kenntnisse >  >> Linux

.bashrc vs. .bash_profile

Wenn Sie viel Zeit auf der Befehlszeile verbringen, möchten Sie wahrscheinlich Ihre Shell-Umgebung anpassen. Dies kann das Erstellen von Aliasnamen oder das Hinzufügen eines neuen Verzeichnisses zum $PATH bedeuten , oder das Aussehen des Shell-Prompts ändern.

Möglicherweise sind Sie auf einige Tutorials gestoßen, in denen Sie sagen, dass Sie Ihre Konfiguration entweder in .bashrc einfügen sollen , .bash_profile oder eine andere Konfigurationsdatei, die von der Bash-Shell gelesen und ausgeführt wird.

In diesem Artikel werden wir über die Bash-Startdateien und den Unterschied zwischen .bashrc sprechen und .bash_profile Dateien.

Interaktive Login- und Nicht-Login-Shell #

Beim Aufruf liest Bash Befehle aus einer Reihe von Startdateien und führt sie aus. Welche Dateien gelesen werden, hängt davon ab, ob die Shell als interaktive Anmelde- oder Nicht-Anmelde-Shell aufgerufen wird.

Eine Shell kann interaktiv oder nicht interaktiv sein.

Einfach ausgedrückt ist eine interaktive Shell eine Shell, die auf dem Terminal eines Benutzers liest und schreibt, während eine nicht interaktive Shell eine Shell ist, die nicht mit einem Terminal verbunden ist, wie zum Beispiel beim Ausführen eines Skripts.

Eine interaktive Shell kann entweder Login- oder Nicht-Login-Shell sein.

Eine Login-Shell wird aufgerufen, wenn sich ein Benutzer entweder remote über ssh oder lokal am Terminal anmeldet oder wenn Bash mit --login gestartet wird Möglichkeit. Eine interaktive Nicht-Login-Shell wird von der Login-Shell aufgerufen, beispielsweise wenn Sie bash eingeben in der Shell-Eingabeaufforderung oder beim Öffnen eines neuen Gnome-Terminal-Tabs.

Bash-Startdateien #

Beim Aufruf als interaktive Login-Shell sucht Bash nach /etc/profile Datei, und wenn die Datei vorhanden ist, werden die in der Datei aufgelisteten Befehle ausgeführt. Dann sucht Bash nach ~/.bash_profile , ~/.bash_login , und ~/.profile Dateien in der aufgelisteten Reihenfolge und führt Befehle von der ersten gefundenen lesbaren Datei aus.

Wenn Bash als interaktive Non-Login-Shell aufgerufen wird, liest und führt es Befehle aus ~/.bashrc aus , wenn diese Datei existiert und lesbar ist.

Unterschied zwischen .bashrc und .bash_profile #

.bash_profile wird gelesen und ausgeführt, wenn Bash als interaktive Login-Shell aufgerufen wird, während .bashrc wird für eine interaktive Nicht-Login-Shell ausgeführt.

Verwenden Sie .bash_profile um Befehle auszuführen, die nur einmal ausgeführt werden sollen, wie z. B. das Anpassen von $PATH Umgebungsvariable.

Fügen Sie die Befehle, die jedes Mal ausgeführt werden sollen, wenn Sie eine neue Shell starten, in die .bashrc ein Datei. Dazu gehören Ihre Aliase und Funktionen, benutzerdefinierte Eingabeaufforderungen, Verlaufsanpassungen usw.

Normalerweise ~/.bash_profile enthält Zeilen wie darunter die Quelle .bashrc Datei. Das bedeutet, dass jedes Mal, wenn Sie sich am Terminal anmelden, beide Dateien gelesen und ausgeführt werden.

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

Die meisten Linux-Distributionen verwenden ~/.profile statt ~/.bash_profile . Der ~/.profile Datei wird von allen Shells gelesen, während ~/.bash_profile nur von Bash.

Wenn auf Ihrem System keine Startdatei vorhanden ist, können Sie sie erstellen.

Schlussfolgerung #

.bash_profile und .bashrc sind Dateien, die Shell-Befehle enthalten, die ausgeführt werden, wenn Bash aufgerufen wird. .bash_profile wird auf interaktiven Login-Shells gelesen und ausgeführt, während .bashrc auf Nicht-Login-Shells.

Weitere Informationen zu Bash-Startdateien finden Sie im Bash-Handbuch.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Wie ändere ich die Cron-Shell (sh in Bash)?

  2. Funktionen in Shell-Variablen?

  3. Was macht . ~/.bashrc Befehl Tun??

  4. .bashrc aus aktueller Shell neu generieren?

  5. So vergleichen Sie Zeichenfolgen in Bash Shell-Skripten

Shell-Scripting Teil V:Funktionen in Bash

So installieren Sie Linux Bash Shell unter Windows 10

Installieren von Fish Shell auf Ubuntu unter Windows 10

Wie man einen Abschnitt einer Datei in der Bash-Shell grep

SSH ohne Beschaffung von .bashrc

Bash liest .bashrc nur, wenn es manuell gestartet wird