Was sind die funktionalen Unterschiede zwischen .profile
, .bash_profile
und .bashrc
Dateien?
Was sind die funktionalen Unterschiede zwischen .profile
, .bash_profile
und .bashrc
Dateien?
Antworten:
.bash_profile
und .bashrc
sind spezifisch für bash
, wohingegen .profile
von vielen Shells gelesen wird, wenn keine eigenen Shell-spezifischen Konfigurationsdateien vorhanden sind. ( .profile
Wurde von der ursprünglichen Bourne-Shell verwendet.) .bash_profile
oder .profile
wird von Login-Shells zusammen mit .bashrc
; gelesen . Subshells schreibgeschützt .bashrc
. (Zwischen Jobsteuerung und modernen Fenstersystemen wird .bashrc
an sich nicht viel gewirkt . Wenn Sie screen
oder verwenden tmux
, werden auf Bildschirmen / Fenstern in der Regel Subshells anstelle von Anmeldeshells ausgeführt.)
Die Idee dahinter war, dass das einmalige Setup von .profile
(oder einer Shell-spezifischen Version davon) und das Pro-Shell-Zeug von durchgeführt wurde .bashrc
. Beispielsweise möchten Sie Umgebungsvariablen im Allgemeinen nur einmal pro Sitzung laden, anstatt sie beim Starten einer Subshell innerhalb einer Sitzung zu beschädigen. Sie möchten jedoch immer Ihre Aliase (die nicht wie Umgebungsvariablen automatisch weitergegeben werden).
Andere bemerkenswerte Shell-Konfigurationsdateien:
/etc/bash_profile
(Fallback /etc/profile
) wird vor dem Benutzer .profile
zur systemweiten Konfiguration und ebenfalls /etc/bashrc
in Subshells gelesen (kein Fallback für diesen). Viele Systeme, einschließlich Ubuntu, verwenden auch ein /etc/profile.d
Verzeichnis mit Shell-Scriptlets, die von .
( source
) stammen /etc/profile
. Die Fragmente sind hier pro Shell, wobei *.sh
sie auf alle Bourne / POSIX-kompatiblen Shells und andere Erweiterungen angewendet werden, die für diese bestimmte Shell gelten.
.Profil
.profile
ist für Dinge, die nicht spezifisch damit zusammenhängen Bash
, wie Umgebungsvariablen PATH
und Freunde, und die jederzeit verfügbar sein sollten.
Zum Beispiel .profile
sollte auch beim Starten einer grafischen Desktopsitzung geladen werden.
.bashrc
.bashrc
dient zum Konfigurieren der interaktiven Bash-Verwendung Bash aliases
, zum Einstellen Ihres Favoriten editor
, zum Einstellen des Bash prompt
usw.
.bash_profile
.bash_profile dient dazu, sicherzustellen, dass sowohl die Dinge in .profile
als .bashrc
auch für geladen sind login shells
.
Könnte zum Beispiel .bash_profile
so etwas Einfaches sein
. ~/.profile
. ~/.bashrc
Wenn Sie weglassen würden .bashrc
, .profile
würde nur geladen werden.
Laut Bash-Manpage .bash_profile
wird für Login-Shells ausgeführt, während .bashrc
für interaktive Nicht-Login-Shells ausgeführt wird.
Was ist eine Login- oder Nicht-Login-Shell?
Wenn Sie sich über die Konsole anmelden (Benutzername und Kennwort eingeben), entweder am Computer oder remote über ssh: .bash_profile
wird ausgeführt, um Ihre Shell vor der ersten Eingabeaufforderung zu konfigurieren. Wenn Sie sich jedoch bereits bei Ihrem Computer angemeldet haben und ein neues Terminalfenster (xterm) in Gnome oder KDE öffnen, .bashrc
wird dies vor der Eingabeaufforderung des Fensters ausgeführt. .bashrc
wird auch ausgeführt, wenn Sie eine neue Bash-Instanz durch Eingeben /bin/bash
eines Terminals starten .
Eine Ausnahme von den Terminal - Fenstern Richtlinien ist Terminal.app Mac OS X, die standardmäßig für jedes neues Terminalfenster ein Login - Shell ausgeführt wird , rief .bash_profile
statt .bashrc
. Andere GUI-Terminalemulatoren tun möglicherweise dasselbe, die meisten neigen jedoch dazu, dies nicht zu tun.
Mehr hier .