Eine Shell ist eine wichtige Schicht der Linux-Architektur. Shell ist eine Schnittstelle, die Eingaben von Benutzern entgegennimmt und Anweisungen an den Kernel sendet. Nimmt auch die Ausgabe von Kernel entgegen und sendet das Ergebnis zurück an die Ausgabe-Shell.
In diesem Tutorial verwenden wir die Bash-Shell für die Beispiele. Grundsätzlich gibt es zwei Arten von Shells:Login-Shell und Non-Login-Shell . Jede Shell führt einen Satz vordefinierter Skripte aus, um Shell-Umgebungen zu konfigurieren.
Login-Shell
Nach erfolgreicher Anmeldung des Benutzers wird eine Login-Shell erstellt. Zum Beispiel, wenn Sie sich über Terminal oder SSH bei einem Linux-System anmelden oder mit dem Befehl „su -“ zum Benutzer wechseln.
Wenn eine Login-Shell gestartet wird, führt sie einen Satz vordefinierter Skripts aus, um die Shell-Umgebung zu konfigurieren. Um die Login-Shell zu identifizieren, führen Sie den folgenden Befehl auf dem Terminal aus.
echo $0
Wenn Sie das Ergebnis wie „-bash“ oder „-su“ bedeutet, befinden Sie sich auf der Login-Shell. Stellen Sie sicher, dass es einen Bindestrich (-) als Präfix hat.
Eine Login-Shell führt folgende Skripte aus:
- Login-Shell führt /etc/profile aus
- /etc/profile führt alle Skripte in /etc/profile.d/ aus
- Führt dann Benutzer ~/.bash_profile aus
- ~/.bash_profile führt Benutzer ~/.bashrc aus
- ~/.bashrc führt /etc/bashrc aus
Non-Login-Shell
Non-Login-Shell ist die Shell, die von der Login-Shell gestartet wird. Zum Beispiel eine Shell, die Sie von einer anderen Shell gestartet oder von einem Programm usw. gestartet haben.
Eine Nicht-Login-Shell führt das folgende Skript aus, um die Shell-Umgebung einzustellen.
- Die Non-Login-Shell führt zuerst ~/.bashrc aus
- Dann führt ~/.bashrc /etc/bashrc aus
- /etc/bashrc ruft die Skripte in /etc/profile.d auf
Überprüfen Sie die Login- vs. Nicht-Login-Shell
Um die aktuelle Shell als Login-Shell oder Nicht-Login-Shell zu finden, führen Sie einfach den folgenden Befehl aus. Sehen Sie sich die Ergebnisse an und finden Sie die Unterschiede heraus.
echo $0
Die Ausgabe der Login-Shell ist -bash oder -su .
Die Shell-Ausgabe ohne Anmeldung ist bash oder su