Das ist ziemlich komplex. Zuallererst hängen die Details davon ab, welche Art von Shell Sie ausführen. Um mich selbst zu plagiieren :
Wenn Sie beispielsweise einen Terminalemulator öffnen gnome-terminal, führen Sie eine sogenannte interaktive Shell ohne Anmeldung aus .
Wenn Sie sich über die Befehlszeile bei Ihrem Computer anmelden oder einen Befehl ausführen, wie z. B. su - username, führen Sie eine interaktive Anmeldeshell aus .
Wenn Sie sich grafisch anmelden, wird etwas völlig anderes ausgeführt. Die Details hängen von Ihrem System und Ihrer grafischen Umgebung ab, aber im Allgemeinen ist es die grafische Shell , die sich um Ihre Anmeldung kümmert. Während viele grafischen Schalen (einschließlich der Standard - Ubuntu) werden gelesen /etc/profileund ~/.profilenicht alle von ihnen tun.
Wenn Sie ein Shell-Skript ausführen, wird es in einer nicht interaktiven Shell ohne Anmeldung ausgeführt .
Die Dateien, die beim Start von bash gelesen werden, hängen vom Typ der Shell ab, unter der es ausgeführt wird. Das Folgende ist ein Auszug aus dem Abschnitt INVOCATION von man bash(Schwerpunkt Mine):
Wenn bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt , sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle von der ersten Datei aus, die vorhanden und lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu unterbinden.
Wenn eine interaktive Shell , das ist kein Login - Shell gestartet wird, bash liest und führt Befehle aus /etc/bash.bashrc und ~ / .bashrc , wenn diese Dateien vorhanden sind . Dies kann mit der Option --norc verhindert werden. Die Option --rcfile file erzwingt, dass Bash anstelle von /etc/bash.bashrc und ~ / .bashrc Befehle aus der Datei liest und ausführt.
Das sind die Initialisierungsdateien. Sie haben auch die /etc/environmentMöglichkeit, globale Umgebungsvariablen festzulegen, die jedoch eher gelesen als bezogen werden (darin enthaltene Befehle werden nicht ausgeführt, aber Variablendefinitionen werden festgelegt).
Jetzt ist die Begrüßung, die Sie sehen, wieder etwas anderes. Das ist eingestellt /etc/motdund wird durch angezeigt pam_motd. Wie erklärt in man motd:
Der Inhalt von / etc / motd wird von pam_motd (8) nach einer erfolgreichen Anmeldung angezeigt, jedoch kurz bevor die Anmeldeshell ausgeführt wird.
Die Abkürzung "motd" steht für "Nachricht des Tages", und diese Datei wird traditionell genau dafür verwendet (sie benötigt viel weniger Speicherplatz als Mail an alle Benutzer).
Unter Debian GNU / Linux wird auch der Inhalt von /run/motd.dynamic angezeigt. Diese Datei wird beim Booten von /etc/init.d/motd generiert.
Um die Nachricht zu entfernen, leeren Sie einfach die /etc/motdDatei und stellen Sie sicher, dass von nichts generiert wird, /etc/init.d/motdfalls vorhanden.
Wie auch immer, basierend auf der Ausgabe, die Sie anzeigen, scheinen Sie sich über anzumelden, sshwas bedeutet, dass Sie eine interaktive Anmeldeshell ausführen (siehe oben). Zusammenfassend gesagt, werden die Dinge, die Sie interessieren, beim Anmelden bezogen (und in dieser Reihenfolge):
- Der SSH-Dämon zeigt über das
pam_motdModul der PAM-Bibliothek den Inhalt von an /etc/motd. Über das pam_envModul setzt es die Umgebungsvariablen von /etc/environmentund ~/.pam_environment.
- Eine Anmeldeshell wird gestartet und die folgenden Dateien werden der Reihe nach gelesen:
/etc/profile
/etc/bash.bashrc(die Standard Ubuntu /etc/profileQuellen /etc/bash.bashrc).
~/.bash_profile. Die anderen Dateien, die hier ( ~/.profileund ~/.bash_login) hätte gelesen werden können, werden ignoriert, da sie ~/.bash_profilevorhanden sind.
export SET_IN_ETC_PROFILE=yesein/etc/profile,export SET_IN_HOME_ZSHRC=yesin~/.zhshrc(ich bin ein zsh-Benutzer), etc ... Dann starte neu und ein netterenv|grep SET_INwird dir die ganze Geschichte erzählen. Informationen dazu, welche Variablen von den Desktop-Anwendungen angezeigt werden (die Sie vom Dash oder der WM aus starten, ohne ein Terminal zu verwenden), finden Sie unter askubuntu.com/a/356973/16395