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

Was ist der Unterschied zwischen Login- und Non-Login-Shell

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


Linux
  1. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  2. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  3. Was ist der Unterschied zwischen &> und >&in bash?

  4. Was ist der Unterschied zwischen unlink und rm?

  5. Was ist der Unterschied zwischen Route und IP-Route?

Was ist der Unterschied zwischen InnoDB und MyISAM?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen apt und dem Befehl apt-get?

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

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen $(CC) und $CC?