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

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

Lösung 1:

.bash_profile und .bashrc sind spezifisch für bash , wohingegen .profile wird von vielen Shells gelesen, wenn keine eigenen Shell-spezifischen Konfigurationsdateien vorhanden sind. (.profile wurde von der ursprünglichen Bourne-Shell verwendet.) .bash_profile oder .profile wird zusammen mit .bashrc von Login-Shells gelesen; Unterschalen nur lesbar .bashrc . (Zwischen Jobsteuerung und modernen Fenstersystemen, .bashrc an sich wird nicht viel verwendet. Wenn Sie screen verwenden oder tmux , Bildschirme/Fenster führen normalerweise Subshells anstelle von Login-Shells aus.)

Die Idee dahinter war, dass die einmalige Einrichtung von .profile durchgeführt wurde (oder Shell-spezifische Version davon) und Shell-Zeug von .bashrc . Beispielsweise möchten Sie Umgebungsvariablen im Allgemeinen nur einmal pro Sitzung laden, anstatt sie jedes Mal zu zerstören, wenn Sie eine Subshell innerhalb einer Sitzung starten, während Sie immer Ihre Aliase haben möchten (die nicht automatisch weitergegeben werden wie Umgebungsvariablen).

Andere bemerkenswerte Shell-Konfigurationsdateien:

/etc/bash_profile (Rückfall /etc/profile ) wird vor dem .profile des Benutzers gelesen für die systemweite Konfiguration und ebenso /etc/bashrc in Subshells (kein Fallback für diese). Viele Systeme, einschließlich Ubuntu, verwenden auch einen /etc/profile.d Verzeichnis mit Shell-Scriptlets, die . sind (source )-ed von /etc/profile; die Fragmente hier sind pro Shell, mit *.sh gelten für alle Bourne/POSIX-kompatiblen Shells und andere Erweiterungen, die für diese bestimmte Shell gelten.

Lösung 2:

.profil

.profile ist für Dinge, die nicht speziell mit Bash zusammenhängen , wie Umgebungsvariablen PATH und Freunden und sollte jederzeit verfügbar sein.

Beispiel:.profile sollte auch geladen werden, wenn eine grafische Desktopsitzung gestartet wird.

.bashrc

.bashrc ist für die Konfiguration der interaktiven Bash-Nutzung, wie Bash aliases , indem Sie Ihren bevorzugten editor einstellen , indem Sie den Bash prompt setzen usw.

.bash_profile

.bash_profile stellt sicher, dass beide Dinge in .profile und .bashrc werden für login shells geladen .

Beispiel:.bash_profile könnte etwas Einfaches sein wie

. ~/.profile
. ~/.bashrc

Wenn Sie .bashrc weglassen würden , nur .profile geladen werden.

Lösung 3:

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

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

Wenn Sie sich über die Konsole anmelden (Benutzername und Passwort eingeben), entweder an der Maschine sitzend, oder remote über ssh:.bash_profile wird ausgeführt, um Ihre Shell vor der anfänglichen Eingabeaufforderung zu konfigurieren. Wenn Sie sich jedoch bereits bei Ihrem Computer angemeldet haben und ein neues Terminalfenster (xterm) in Gnome oder KDE öffnen, dann .bashrc wird vor der Fenstereingabeaufforderung ausgeführt. .bashrc wird auch ausgeführt, wenn Sie eine neue Bash-Instanz starten, indem Sie /bin/bash eingeben in einem Terminal.

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

Mehr hier.


Linux
  1. MySQL vs. MariaDB:Was sind die Hauptunterschiede zwischen ihnen?

  2. Was sind die grundlegenden Unterschiede zwischen den Mainstream-*nix-Shells??

  3. Der Unterschied zwischen ~/.profile und ~/.bash_profile?

  4. Fedora vs. Ubuntu:Was sind die Hauptunterschiede?

  5. Was sind die Unterschiede zwischen `chattr +i FILE` und `chmod -w FILE`?

Was ist der Unterschied zwischen Linux und Unix?

Was sind die Unterschiede zwischen cPanel und WHM?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was sind die Unterschiede zwischen Linux- und Windows-.txt-Dateien (Unicode-Codierung)

Was ist der Unterschied zwischen ls und l?