Was ist der Unterschied zwischen ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, ~ / .bash_profile, ~ / .profile, / etc / profile, /etc/bash.bashrc, / etc / ssh / ssh_config und sshd_config, wann werden sie geladen und was sind ihre Ziele?
Die man-Seite für bash sagt, dass es die folgenden Initialisierungsdateien für bash-Shells gibt:
%Vor% Anscheinend gibt es verschiedene Konfigurationsdateien für die verschiedenen Shells (bash, zsh, csh und andere). Es scheint so viele Shells wie verschiedene Linux- und Unix-Versionen zu geben: csh, ksh, bash, zsh, ... Bash hat .bashrc
, Zsh hat .zshrc
usw. Man kann auch unterscheiden zwischen Login-Shells und nicht -login Shells und zwischen systemweiten Standardeinstellungen und benutzerspezifischen Standardeinstellungen.
Es ist sinnvoll zwischen Login und Nicht-Login Shells zu unterscheiden, da einige Befehle nur beim Login ausgeführt werden sollten, während andere Befehle immer ausgeführt werden sollten, wenn Sie einen neuen öffnen Terminalfenster. Das ist der Unterschied zwischen .bash_profile und .bashrc . Bei bash wird .bashrc
jedes Mal neu geladen, wenn Sie eine neue bash-Kopie starten, d. H. Wenn Sie eine neue bash starten, sich aber nicht anmelden. Das .bash_profile
oder .profile
wird nur beim Anmelden geladen. Die Abkürzung rc in bashrc steht für "run commands" oder "run control" und ist eine Konvention, die von älteren Unix-Systemen übernommen wurde.
systemweite Standardeinstellungen für ..
/etc/profile
..login Shells, für interaktive Shells mit Login /etc/bashrc
..non-login Bash-Shells benutzerspezifische Standardeinstellungen im Home-Verzeichnis ~ für ..
~/.profile
..login shells, aufgerufen nach dem Login ~/.bashrc
..non-Login-Shells, wenn bereits eingeloggt ~/.bash_profile
..login Shells, aufgerufen nach der Anmeldung (niedrigere Priorität) benutzerspezifische Standardeinstellungen im Home-Verzeichnis für An- und Abmeldung
~/.bash_login
..login Shells (beim Login aufgerufen) ~/.bash_logout
..login shells (aufgerufen beim Logout) Die folgenden Links waren hilfreich: .bashrc vs .bashprofile und .bash_profile vs .bashrc , die Bash Handbuchseite (man bash), und Zsh / Bash-Startup-Dateien laden Reihenfolge (. Bashrc,. Zshrc usw.) .
Ich bin neugierig auf diese Dateien und experimentiere selbst. Es ist etwas anders als in den Dokumenten.
Ich kenne die Unterschiede zwischen interaktiv und nicht-interaktiv oder Login und Nicht-Login.
Ich probierte zwei Computer aus, mein MacBook Pro mit OS 10.9 und einen Server mit Ubuntu-Server 13.10. Ich füge den folgenden Befehl in das / etc / profile:
%Vor%Und ähnliche Befehle in /etc/bash.bashrc, / etc / bashrc, /etc/bash.bashrc, ~ / .profile, ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login und stellen Sie sicher, dass diese Dateien beziehen sich nicht in sich selbst.
(OS 10.9, GNU Bash, Version 3.2.51 (1) -Release (x86_64-apple-darwin13)) Auf dem Mac mit interaktiver Login-Bash habe ich:
%Vor%Das bedeutet, dass die direkt geladenen Dateien nur / etc / profile und ~ / .bash_profile sind.
mit interaktiver Nicht-Login-Bash habe ich:
%Vor%was bedeutet, dass die direkt geladene Datei ~ / .bashrc ist.
(Ubuntu-Server 13.10 GNU-Bash, Version 4.2.45 (1) -Release (x86_64-pc-linux-gnu)) Auf dem Ubuntu mit interaktiver Login-Bash habe ich:
%Vor%Das bedeutet, dass die direkt geladenen Dateien nur / etc / profile und ~ / .bash_profile sind.
mit interaktiver Nicht-Login-Bash habe ich:
%Vor%Das bedeutet, dass die direkt geladenen Dateien /etc/bash.bashrc und ~ / .bashrc sind.
Ich weiß nicht warum