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

8 Arten von Linux-Shells

Einführung

Linux wird mit mehreren verschiedenen Shells geliefert. Obwohl eine Distribution eine Standard-Shell hat, können Benutzer zu einem anderen Typ wechseln oder einen neuen installieren.

Wenn Sie Ihre Standard-Shell ändern möchten, hilft Ihnen die Kenntnis der verschiedenen verfügbaren Typen dabei, einen klaren Überblick über die möglichen Optionen zu erhalten.

Dieser Artikel zeigt die Bedeutung und Funktionen von acht verschiedenen Linux-Shells.

Was ist eine Linux-Shell und warum ist sie wichtig?

Eine Hülle ist ein Befehlszeileninterpreterprogramm, das Befehle analysiert und an das Betriebssystem sendet. Dieses Programm repräsentiert die interaktive Schnittstelle eines Betriebssystems und die äußerste Schicht (oder Shell) des Kernels. Es ermöglicht Benutzern und Programmen, Signale zu senden und Low-Level-Dienstprogramme eines Betriebssystems offenzulegen.

Das Terminalprogramm (oder der Terminalemulator) ermöglicht die Interaktion mit den Dienstprogrammen des Systems. Wenn wir einen beliebigen Befehl im Terminal ausführen, z. B. ls oder cat, analysiert, wertet die Shell das entsprechende Programm aus, sucht danach und führt es aus, falls es gefunden wird.

Arten von Linux-Shells

Linux bietet verschiedene Shell-Typen, um verschiedene Probleme durch einzigartige Funktionen anzugehen. Die Shells, die zusammen mit Unix entwickelt wurden, haben im Laufe der Entwicklung oft Funktionen voneinander ausgeliehen.

Nachfolgend finden Sie eine kurze Übersicht über verschiedene Shell-Typen und ihre Funktionen .

1. Bourne-Muschel (sh)

Die Bourne-Shell war die erste Standard-Shell auf Unix-Systemen, die 1979 veröffentlicht wurde. Der Shell-Programmname ist sh , und der traditionelle Speicherort ist /bin/sh . Die Eingabeaufforderung wechselt zu $ , während der Root-Prompt # ist .

Die Bourne-Shell wurde schnell populär, weil sie kompakt ist und schnell . Aber sh fehlen einige Standardfunktionen, wie zum Beispiel:

  • Logische und arithmetische Erweiterung.
  • Befehlsverlauf.
  • Andere umfassende Funktionen wie Autocomplete.

Moderne Unix-ähnliche Systeme haben die /bin/sh ausführbare Datei. Das Programm startet nicht die Bourne-Shell, sondern fungiert als ausführbare Datei, die auf die Standard-System-Shell zeigt .

Bei den meisten Systemen zeigt der harte oder symbolische Link auf bash , während auf Ubuntu und Debian der Link auf dash lautet . In beiden Fällen ahmt der Link die Bourne-Shell so weit wie möglich nach.

2. C-Shell (csh)

Die C-Shell (csh ) ist eine Linux-Shell aus den späten 1970er Jahren, deren Hauptziel es war, die interaktive Nutzung zu verbessern und die C-Sprache nachzuahmen. Da der Linux-Kernel überwiegend in C geschrieben ist, zielt die Shell darauf ab, stilistische Konsistenz über das gesamte System hinweg bereitzustellen.

Der Pfad zur ausführbaren C-Shell-Datei ist /bin/csh . Die Eingabeaufforderung verwendet % für normale Benutzer und # für den Root-Benutzer.

Neue interaktive Funktionen enthalten:

  • Verlauf des vorherigen Befehls.
  • Benutzerdefinierte Aliase für Programme.
  • Relatives Home-Verzeichnis (~ ).
  • Integrierte Ausdrucksgrammatik.

Die Hauptnachteile der C-Shell sind:

  • Syntaxinkonsistenzen.
  • Keine Unterstützung für Standard-Eingabe/Ausgabe (stdio)-Datei-Handles oder -Funktionen.
  • Nicht vollständig rekursiv, was die komplexe Befehlsverarbeitung einschränkt.

Die C-Shell verbesserte die Lesbarkeit und Leistung im Vergleich zur Bourne-Shell. Die interaktiven Features und Innovationen in csh beeinflussten alle nachfolgenden Unix-Shells.

3. TENEX C-Shell (tcsh)

Die TENEX C Schale (tcsh ) ist eine Erweiterung der C-Shell (csh ) Anfang der 1980er Jahre fusioniert. Die Shell ist abwärtskompatibel mit csh, mit zusätzlichen Funktionen und Konzepten, die vom TENEX OS entlehnt wurden.

Der ausführbare Pfad der TENEX C-Shell befindet sich in /bin/tcsh . Die Benutzeraufforderung ist hostname:directory> während der Root-Prompt hostname:directory# ist . Frühe Versionen von Mac OS und die Standard-Root-Shell von FreeBSD verwenden tcsh.

Weitere Features der Shell sind:

  • Erweiterter Befehlsverlauf.
  • Programmierbare Autovervollständigung.
  • Platzhalterübereinstimmung.
  • Auftragskontrolle.
  • Eingebauter Where-Befehl.

Da tcsh eine Erweiterung der C-Shell ist, bleiben viele Nachteile in der erweiterten Version bestehen.

4. KornShell (ksh)

Die Kornschale (ksch ) ist eine Unix-Shell und -Sprache, die auf der Anfang der 1980er Jahre entwickelten Bourne-Shell (sh) basiert. Der Speicherort ist in /bin/ksh oder /bin/ksh93 , während die Eingabeaufforderung dieselbe ist wie die der Bourne-Shell ($ für einen Benutzer und # für root).

Die Shell implementiert Funktionen aus der C-Shell und der Bourne-Shell und zielt darauf ab, sich sowohl auf interaktive Befehle als auch auf Programmierfunktionen zu konzentrieren. Die KornShell fügt eigene neue Features hinzu, wie zum Beispiel:

  • Eingebaute mathematische Funktionen und Fließkomma-Arithmetik.
  • Objektorientierte Programmierung.
  • Erweiterbarkeit von eingebauten Befehlen.
  • Kompatibel mit der Bourne-Shell.

Die Shell ist schneller als die C-Shell und die Bourne-Shell.

5. Debian Almquist-Shell (Bindestrich)

Die Debian Almquist-Shell (Bindestrich ) ist eine Ende der 1990er Jahre aus der Almquist-Shell (ash) entwickelte Unix-Shell, die nach Debian portiert und umbenannt wurde.

Dash ist dafür bekannt, die Standard-Shell für Ubuntu und Debian zu sein. Die Shell ist minimal und POSIX-kompatibel, was sie für OS-Startskripte praktisch macht.

Der ausführbare Pfad ist /bin/dash , zusätzlich zu /bin/sh zeigt auf /bin/dash auf Ubuntu und Debian. Die Standard- und Root-Benutzereingabeaufforderung ist die gleiche wie in der Bourne-Shell.

Zu den Dash-Funktionen gehören:

  • Ausführungsgeschwindigkeit bis zu 4x schneller als Bash und andere Shells.
  • Benötigt im Vergleich zu Alternativen nur minimalen Speicherplatz, CPU und RAM.

Der Hauptnachteil ist, dass dash nicht Bash-kompatibel ist. Die Merkmale, die nicht in Bindestrichen enthalten sind, werden als „Bashismen“ bezeichnet. Daher erfordern Bash-Skripte zusätzliche Überarbeitungen von Bashismen, um erfolgreich ausgeführt zu werden.

6. Bourne Again Shell (bash)

Die Bourne Again-Shell ist eine Unix-Shell und Befehlssprache, die als Erweiterung der Bourne-Shell (sh ) im Jahr 1989. Das Shell-Programm ist die Standard-Anmelde-Shell für viele Linux-Distributionen und frühere Versionen von macOS.

Der Shell-Name wird zu bash verkürzt , und der Speicherort ist /bin/bash . Wie bei der Bourne-Shell lautet die Bash-Eingabeaufforderung $ für einen normalen Benutzer und # für root.

Bash führt Funktionen ein, die in der Bourne-Shell nicht zu finden sind, darunter einige:

  • Klammererweiterung.
  • Befehlsabschluss.
  • Grundlegendes Debugging und Signalbehandlung.
  • Befehlsverlauf.
  • Bedingte Befehle, wie die Bash-Anweisungen if und bash case.
  • Hierdoc-Unterstützung.

Hinweis: Einige Features sind nicht Bash-spezifisch, sondern von anderen Shells entlehnt.

Da bash eine Obermenge der Bourne-Shell ist, werden die meisten sh-Skripte ohne weitere Änderungen in bash ausgeführt.

7. Z-Shell (zsh)

Die Z-Shell (zsh ) ist eine Unix-Shell, die Anfang der 1990er Jahre als Erweiterung für die Bourne-Shell entwickelt wurde. Die funktionsreiche Shell leiht sich Ideen von ksh und tcsh, um eine gut gebaute und brauchbare Alternative zu schaffen.

Der ausführbare Speicherort befindet sich in /bin/zsh . Die Eingabeaufforderung lautet [email protected] location % für normale Benutzer und hostname# für den Root-Benutzer. Die Z-Shell ist die Standard-Shell von Kali Linux und Mac OS.

Zu den neuen Funktionen, die der zsh hinzugefügt wurden, gehören:

  • Gemeinsamer Verlauf zwischen allen laufenden Shell-Sitzungen.
  • Verbesserte Handhabung von Arrays und Variablen.
  • Rechtschreibkorrekturen und automatisches Ausfüllen des Befehlsnamens.
  • Verschiedene Kompatibilitätsmodi.
  • Erweiterbarkeit durch Plugins.

Die Shell ist aufgrund der Community-gesteuerten Unterstützung durch das Oh My Zsh-Framework in hohem Maße konfigurierbar und anpassbar.

8. Freundliche interaktive Shell (Fisch)

Die freundliche interaktive Shell (Fisch ) ist eine Mitte der 2000er Jahre veröffentlichte Unix-Shell mit Fokus auf Benutzerfreundlichkeit. Die funktionsreiche Shell erfordert keine zusätzliche Konfiguration, was sie von Anfang an benutzerfreundlich macht.

Der standardmäßige ausführbare Pfad ist /usr/bin/fish . Die Benutzeraufforderung lautet [email protected] location> , während der Root-Prompt [email protected] location# ist .

Zu den Funktionen in der Shell gehören:

  • Erweiterte Vorschläge/Tabvervollständigung basierend auf dem aktuellen Verzeichnisverlauf.
  • Hilfreiche Syntaxhervorhebung und beschreibende Fehlermeldungen.
  • Webbasierte Konfiguration.
  • Befehlsverlauf mit Suchoptionen.

Der Hauptnachteil von Fisch ist die Nichteinhaltung von POSIX. Die Entwickler zielen jedoch darauf ab, fehlerhafte Designs von POSIX zu verbessern.

Fazit

Nachdem Sie in diesem Artikel über verschiedene Shell-Typen gelesen haben, haben Sie einen besseren Überblick über die verfügbaren Linux-Shells. Es gibt andere Shells für bestimmte Anwendungsfälle, und jeder Shell-Typ behandelt andere Probleme.


Linux
  1. So ändern Sie die Shell unter Linux

  2. Was sind die verschiedenen Arten von Shells in Linux?

  3. UNIX / Linux:Was ist eine Shell? Was sind verschiedene Muscheln?

  4. rbash – Setze eingeschränkte Shell in Linux

  5. chsh-Befehlsbeispiele in Linux

Beliebte Open-Source-Shells in Linux

So ändern Sie eine Benutzer-Shell in Linux

Quellbefehl unter Linux erklärt

Linux-Shell-Zusammenfassung:15 beliebteste Open-Source-Linux-Shells

Was ist Subshell in Linux?

Was ist die Login-Shell in Linux?