Was ist der Unterschied zwischen einer 'Login'- und einer' Interactive'-Bash-Shell? Ich habe Wikipedia unten zitiert, aber kann jemand eine bessere Antwort geben?
BEARBEITEN: Dies ist ein Community-Wiki. Anstatt also zum Schließen abzustimmen, können Sie Beispiele dafür angeben, in welchen Situationen welche Art von $ SHELL erforderlich ist
Startskripte
Beim Start von Bash werden die Befehle in verschiedenen Skripten ausgeführt.
Wenn Bash als interaktive Anmeldeshell aufgerufen wird, liest es zuerst die Befehle aus der Datei / etc / profile und führt sie aus, 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.
Wenn eine Anmeldeshell beendet wird, liest Bash Befehle aus der Datei ~ / .bash_logout und führt sie aus, falls vorhanden.
Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest Bash Befehle von ~ / .bashrc und führt sie aus, sofern diese Datei vorhanden ist. Dies kann mit der Option --norc verhindert werden. Die Option --rcfile file erzwingt, dass Bash anstelle von ~ / .bashrc Befehle aus der Datei liest und ausführt.
Antworten:
In den Profildateien Ihrer Login-Shell können Sie einige Dinge einrichten, die Sie während Ihrer Sitzung verwenden und die nur einmal ausgeführt werden müssen. Einige Ideen:
In den Dateien einer Nicht-Login-Shell (
.bashrc
) sollten Sie Ihre Shell konfigurieren:.bash_profile
Normalerweise würden Sie
.bashrc
von.bash_profile
mit folgendem aufnehmen. Dann erhält die Login-Shell alle Ihre Anpassungen, und die.bash_profile
Datei muss keine bereits vorhandenen Elemente duplizieren.bashrc
.quelle