Linux -Shell -Schnittstelle zum Linux -Kernel

Linux -Shell -Schnittstelle zum Linux -Kernel
Wir werden die Linux -Shell durchlaufen, einen Befehlsinterpreter für Linux. Shell bietet eine Umgebung, in der nur wenige C -Programme auf dem spezifischen bekannten Pfad vorhanden sind. Shell lokalisiert diese ausführbaren Ausführungen und liefert die Ausgabe dieser Befehle an die Konsole. Wir werden einige wenige Beispielbefehle und die Umgebungsvariablen der Shell diskutieren.

Beschreibung:

Shell bietet dem Benutzer eine Umgebung, in der der Benutzer mehrere ausführbare Programme ausführen kann, und die Ausgabe dieser Programme wird auf der Anzeige angezeigt. Grundsätzlich ist die Arbeitsphilosophie der Schale, dass sie kontinuierlich darauf wartet, dass der Benutzer die Zeichenfolge eingibt. Dann wird diese Zeichenfolge durchsucht und mit den bekannten ausführbaren Programmen abgestimmt, die in der Shell -Umgebung vorhanden sind. Wenn das übereinstimmende, ausführbare Programm gefunden wird, wird die ausführbare Datei nach dem Erstellen eines Kinderprozesses gestartet. Dieser neu erstellte Kinderprozess führt das Programm aus. Die Ausgabe des Programms wird an den übergeordneten Prozess übergeben, der Shell ist. Shell druckt die Ausgabe in die Konsole, wenn der Ausgang nicht weitergeleitet wird. Die Standorte, an denen die Shell nach den ausführbaren Programmen sucht, sind in der Umgebungsvariablen „Pfad“ vorhanden. Die Pfadvariable hält die „:“ -Rufe auf einem Pfad, auf dem Shell nach den ausführbaren Programmen sucht.

Das Blockdiagramm für die Schale ist im Folgenden dargestellt:

Aus dem bereitgestellten Blockdiagramm können wir zu dem Schluss kommen, dass wir eine Shell benötigen, um eine ausführbare C -Datei in Linux -Umgebung auszuführen. Ohne die Shell ist es nicht möglich, das C -Programm dynamisch auszuführen. Es gibt einige vordefinierte ausführbare Programme, die als Shell -Befehle bezeichnet werden. Einige Beispiele der Shell -Befehle sind LS, PS usw.

Lassen Sie uns die Shell -Befehle besprechen. Es gibt zwei Arten von Shell -Befehlen:

a) integrierte Befehle

Dies sind die Befehle, die Teil der Hülle selbst sind. Während der Ausführung dieser Befehle gweißt Shell nicht. Diese Befehle werden als Teil von Shell selbst ausgeführt. Um diese Befehle zu aktualisieren, benötigen wir ein Update in der Shell selbst. Diese Befehle sind mit der Shell verbunden.

Einige Beispiele für die integrierten Befehle sind CD, Echo, Kill, Break, Alias, BG usw. Wir können den Befehl „Hilfe“ verwenden, um die gesamte Liste der integrierten Befehle anzuzeigen.

b) externe Befehle

Diese Befehle sind das separate C -Programm ausführbare Programme. Diese sind nicht Teil der Schale. Dies sind Orte auf einem bestimmten Weg. Shell schaut auf diese Pfade aus, führt die Programme aus und zeigt die Ausgabe an. Das Hinzufügen eines neuen Befehls zur Liste der bekannten Befehle ist einfach. Kopieren Sie einfach ein neues ausführbares Programm/einen neuen Befehl in den bekannten Pfad. Im Allgemeinen werden diese Befehle auf dem Weg wie /usr /bin /usr /sbin usw. platziert. Alle Standorte sind im Pfad angegeben.

In meinem System kann der bekannte Pfad zur Shell, der den Echo -Befehl ist, überprüft werden, um die vollständige Liste des Pfades zu erhalten:

Ubuntu@sratathore: $ echo $ path
/home/cienauser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Wenn wir einen neuen Pfad in diese Liste einführen möchten, können wir die Werte auf die Pfadumgebungsvariablen aktualisieren. Der Befehl „Exportieren“ kann verwendet werden, um den Pfad mit den neuen Werten zu aktualisieren.

Mit dem Befehl „Type Typ“ können wir erhalten, dass jeder Befehl integriert oder extern ist. Lassen Sie uns die Verwendung von "Typ" verstehen. Das Ausführen des Typs mit "CD" ergibt die folgende Ausgabe:

Ubuntu@sratathore: ~/$ Typ CD
CD ist eine Hülle, die gebaut wurde
Ubuntu@sratathore: ~/$

Die Ausgabe des vorherigen Befehls ist selbsterklärend.

Versuchen wir nun den Befehl "Typ" mit dem Befehl LSPCI:

Ubuntu@sratathore: ~/$ type lspci
lspci ist/usr/bin/lspci
Ubuntu@sratathore: ~/$

Da die Ausgabe den Pfad der ausführbaren Datei zeigt, können wir zu dem Schluss kommen, dass dies ein externer Befehl ist.

Umgebungsvariablen

Es gibt nur wenige Umgebungsvariablen, die für die Schale definiert sind. Bis jetzt haben wir die Pfadvariable verstanden. Pfad ist eine Umgebungsvariable, die die Liste der Pfadliste zur Suche nach externen Befehlen enthält. Die vollständige Liste der Umgebungsvariablen kann mit Hilfe des Env -Befehls überprüft werden. Der Befehl env enthält die vollständige Liste der Umgebungsvariablen.

Einige wenige Beispiele für die Umgebungsvariablen von Shell sind:

  • Pfad: Die Liste der Pfade für externe Befehle.
  • Shell: Die Art der Shell, die derzeit aktiv ist.
  • Oldpwd: Das letzte Arbeitsverzeichnis.
  • PWD: Bezieht sich auf das gegenwärtige Arbeitsverzeichnis.
  • Benutzer: Der Benutzername für die aktive Shell.
  • Home: Das Heimverzeichnis für den Benutzer.

Es gibt viele mehr. Wie bereits erwähnt, kann die vollständige Liste mit dem Env -Befehl überprüft werden.

Ändern der Umgebungsvariablen

Die erforderlichen Werte können direkt der Variablen zugeordnet werden, da Shell es uns ermöglicht, den Zuordnungsoperator zu verwenden. Der aktuelle Wert einer Shell -Variablen ist mit Hilfe des Echo -Befehls zu sehen. Zum Beispiel, wenn wir den Wert des Pfads überprüfen möchten. Das Ausführen des folgenden Befehls sollte dazu in der Lage sein:

Echo $ path

Wenn Sie den $ Operator vor der Variablen in der Shell verwenden, druckt der Wert der Variablen. Dies ist das Angebot des Echo -Befehls. In ähnlicher Weise kann Echo verwendet werden, um jede Umgebungsvariable zu drucken.

Wenn wir die Pfadvariable aktualisieren möchten, möchten wir den benutzerdefinierten Pfad wie /usr /Cutom aktualisieren, den wir dem Pfad hinzufügen möchten. Wir platzieren unsere Cutom -Befehle auf diesen Weg. Damit die Shell diese Befehle ausführen kann, muss ihr Wert im Pfad aktualisiert werden. Ohne den Pfad zu aktualisieren, wenn wir diese benutzerdefinierten Programme ausführen, erhalten wir den Fehler mit der Aufschrift "Keine solche Datei oder Verzeichnis". Dieser Fehler besagt eindeutig, dass die Shell die Befehle nicht lokalisieren kann.

Als Experiment platzieren wir unseren benutzerdefinierten Befehl, Myls und Myps, in/home/sratathore/benutzerdefiniert. Wenn wir Myls oder MyPs von /home /sratathore ausführen, haben wir die folgende Nachricht von der Shell:

sratathore@sratathore: ~ $ myls
Befehl 'Myls' nicht gefunden, meinten Sie:
Befehl 'Tyls' aus der Deb -Terminologie
Befehl 'MMLs' von Deb Sleuthkit
Versuchen Sie: sudo apt installieren
sratathore@sratathore: ~ $ myps
Befehl 'myps' nicht gefunden, meinst du:
Befehl 'mypy' von Deb mypy
Versuchen Sie: sudo apt installieren
sratathore@sratathore: ~ $

Die vorherigen Nachrichten zeigen, dass diese Befehle nicht gefunden werden und ein Vorschlag durch das Betriebssystem zur Installation dieser Befehle gegeben wird.

Lassen Sie uns nun den neuen benutzerdefinierten Pfad wie folgt zum vorhandenen Pfad hinzufügen:

sratathore@sratathore: ~ $ echo $ path
/home/cienauser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
sratathore@sratathore: ~ $ export path = $ path:/home/sratathore/benutzerdefiniert
sratathore@sratathore: ~ $ echo $ path
/home/cienauser/.Lokal/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/sratathore/benutzerdefiniert
sratathore@sratathore: ~ $

Unser neuer Weg ist fett hervorgehoben. Wir können sehen, dass die Pfadumgebungsvariable mit dem neuen Wert aktualisiert wird.

Versuchen wir nun erneut, die Befehle auszuführen, die in unserem benutzerdefinierten Pfad vorhanden sind. Durch die Ausführung von „MyPs“ und „Myls“ haben wir die folgende Ausgabe:

sratathore@sratathore: ~ $ myps
PID tty Time CMD
2112 Punkte/0 00:00:00 Bash
2783 Punkte/0 00:00:00 myps
sratathore@sratathore: ~ $ myls
A.OUT OUT PACK-INSTALLED SPD_TOOL BUST_ROOT_FS KERNEL_Articles Patches Stime
CORBOOT KERNEL_UBUNTU PCIE_TRANSFER_APP STIME.C
Bash_arm benutzerdefinierte LMsensoren Redfishtool telnet_scripts nvm_cli
OpenSsh Snap
sratathore@sratathore: ~ $

Die vorherigen Protokolle zeigen, dass beide Befehle perfekt funktionierten. Wir hatten keinen Fehler, wie wir vor der Aktualisierung der Pfadvariablen beobachtet haben. Wir haben die wichtigste Shell -Variable diskutiert, die wir in unserer täglichen Entwicklungsarbeit im Allgemeinen ändern. Wenn wir ein neues Paket installieren, wird diese Variable so aktualisiert, dass die neuen Toolbefehle einfach von der Shell lokalisiert werden können.

Abschluss

Wir haben die Definition von Shell diskutiert. Wir haben auch die Philosophie hinter der Shell -Implementierung der verschiedenen Arten von Befehlen gesehen, die von Shell und den Umgebungsvariablen der Shell bereitgestellt wurden. Wir haben auch nur wenige Umgebungsvariablen durchgemacht. Am wichtigsten ist, dass wir über die Pfadvariable diskutiert haben. Wir haben auch den Weg gesehen, um den Pfad und die Bedeutung der Variablen zu aktualisieren, die durch ein Beispiel demonstriert wird. Wir haben gelernt, wie wichtig Shell und seine Angebote sind.