Frage Was sind die funktionalen Unterschiede zwischen .profile .bash_profile und .bashrc


Was sind die funktionellen Unterschiede zwischen den? .profile, .bash_profile und .bashrc Dateien?


119
2018-04-20 15:42


Ursprung




Antworten:


.bash_profile und .bashrc sind spezifisch für bash, wohingegen .profile wird von vielen Shells in Abwesenheit ihrer eigenen Shell-spezifischen Konfigurationsdateien gelesen. (.profile wurde von der ursprünglichen Bourne-Shell verwendet.) .bash_profile oder .profile wird von Login-Shells zusammen mit gelesen .bashrc; Subshells nur lesen .bashrc. (Zwischen Jobsteuerung und modernen Fenstersystemen, .bashrc an sich gewöhnt sich nicht viel. Wenn du benutzt screen oder tmux, Bildschirme / Fenster laufen in der Regel Subshells statt Login Shells.)

Die Idee dahinter war, dass das einmalige Setup von .profile (oder Shell-spezifische Version davon) und per-Shell-Sachen von .bashrc. Beispielsweise möchten Sie im Allgemeinen nur einmal pro Sitzung Umgebungsvariablen laden, anstatt sie bei jedem Start einer Subshell innerhalb einer Sitzung zu beschädigen, während Sie immer Ihre Aliase (die nicht automatisch wie Umgebungsvariablen propagiert werden) möchten.

Andere bemerkenswerte Shell-Konfigurationsdateien:

/etc/bash_profile (Zurückfallen /etc/profile) wird vor dem Benutzer gelesen .profile für die systemweite Konfiguration und ebenso /etc/bashrc in Teilschalen (kein Fallback für diese). Viele Systeme einschließlich Ubuntu verwenden auch ein /etc/profile.d Verzeichnis, das Shell Scriptlets enthält . (source) von /etc/profile; die Fragmente sind hier per-shell, mit *.sh Anwenden auf alle Bourne / POSIX-kompatiblen Shells und andere Erweiterungen, die für diese bestimmte Shell gelten.


101
2018-04-20 15:51





.Profil

.profile ist für Dinge, die nicht spezifisch damit zusammenhängen Bash, wie Umgebungsvariablen PATH und Freunde, und sollte jederzeit verfügbar sein.

Zum Beispiel, .profile sollte auch beim Starten einer grafischen Desktop-Sitzung geladen werden.


.bashrc

.bashrc ist für die Konfiguration der interaktiven Bash-Nutzung, wie Bash aliases, deinen Liebling einstellen editorEinstellung der Bash prompt, usw.


.bash_profile

.bash_profile sorgt dafür, dass beide Dinge in .profile und .bashrc sind geladen für login shells.

Zum Beispiel, .bash_profile könnte etwas einfaches sein wie

. ~/.profile
. ~/.bashrc

Wenn du weglassen würdest .bash_profile, nur .profile würde geladen werden.


31
2018-04-17 06:15



Dies beantwortet meine Frage für Mac OS X - Jake Toronto


Entsprechend der Bash-Man-Seite wird .bash_profile für Login-Shells ausgeführt, während .bashrc für interaktive Nicht-Login-Shells ausgeführt wird.

Also, was ist eine Login- oder Nicht-Login-Shell?

Wenn Sie sich anmelden (Benutzername und Passwort eingeben), über die Konsole, entweder am Computer oder über ssh: .bash_profile, wird ausgeführt, um Ihre Shell vor der ersten Eingabeaufforderung zu konfigurieren. Wenn Sie jedoch bereits in Ihrem Computer angemeldet sind und ein neues Terminalfenster (xterm) in Gnome oder KDE öffnen, wird .bashrc vor der Eingabeaufforderung des Fensters ausgeführt. .bashrc wird auch ausgeführt, wenn Sie eine neue Bash-Instanz durch Eingabe von / bin / bash in einem Terminal starten.

Eine Ausnahme von den Richtlinien für das Terminalfenster ist die Terminal.app von Mac OS X, die standardmäßig für jedes neue Terminalfenster eine Login-Shell ausführt, die .bash_profile statt .bashrc aufruft. Andere GUI-Terminal-Emulatoren können das gleiche tun, aber die meisten neigen nicht dazu.

Mehr hier http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html


21
2018-04-03 12:52