Unterschied zwischen Sh und Bash

Fumbani Banda 30 Januar 2023
  1. Was ist eine Shell?
  2. Wie man die aktuelle Shell findet
  3. Wie man die verfügbaren Shells findet
  4. Der sh-Befehl und seine Verwendung
  5. Bash und seine Verwendung
Unterschied zwischen Sh und Bash

Dieses Tutorial erklärt, was eine Shell ist, indem man die aktuell verwendete Shell kennt, die Liste aller verfügbaren Shells überprüft und den Unterschied zwischen sh und bash erklärt.

Was ist eine Shell?

Eine Shell ist ein Computerprogramm, das Befehle entgegennimmt. Es interpretiert auch Befehle und übergibt sie zur Verarbeitung an das Betriebssystem. Es fungiert als Schnittstelle zwischen dem Benutzer und dem Betriebssystem, über die der Benutzer mit dem Betriebssystem interagieren kann.

Die meisten Linux-Betriebssysteme enthalten mindestens ein einzelnes Shell-Programm. Das Shell-Programm ist Bash, Dash oder beides.

Wie man die aktuelle Shell findet

Um die Shell zu kennen, die derzeit auf einem Linux-System verwendet wird, können wir die Datei /etc/passwd lesen, da sie Benutzerkontoinformationen speichert. Lassen Sie uns den folgenden Befehl ausführen, um die aktuelle Shell zu kennen.

Der Befehl grep wird verwendet, um in einer bestimmten Datei nach einer Zeichenkette zu suchen. Der folgende Befehl sucht nach dem Benutzer fumba in der Datei passwd, die sich in /etc befindet. Wenn der Befehl grep eine Übereinstimmung findet, gibt er die Zeile mit dem Ergebnis aus.

$ grep fumba /etc/passwd

Aus der Ausgabe unten können wir erkennen, dass die Standard-Shell für den Benutzer fumba bash ist.

fumba:x:1000:1000:,,,:/home/fumba:/bin/bash

Wie man die verfügbaren Shells findet

Alle verfügbaren Shells in Linux-Systemen sind in der Datei /etc/shells aufgelistet. Wir verwenden den untenstehenden Befehl cat, um den Inhalt der Datei /etc/shells anzuzeigen.

cat /etc/shells

Die folgende Ausgabe zeigt die Liste aller verfügbaren Shells auf unserem System.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

Der sh-Befehl und seine Verwendung

sh ist ein Befehlsname für die Bourne-Shell. Es ist der Standard-Kommandosprachen-Interpreter für Unix-ähnliche Betriebssysteme. Es führt Befehle aus einer BefehlszeilenZeichenkette, der Standardeingabe oder einer angegebenen Datei aus. sh entspricht den POSIX-Standards.

Portable Operating System Interface (POSIX) ist eine Familie von Standards, die von der IEEE Computer Society spezifiziert wurden, um die Kompatibilität zwischen Betriebssystemen aufrechtzuerhalten. Diese Standards helfen bei der Entwicklung plattformübergreifender Software für mehrere Betriebssysteme, sobald die Standards befolgt werden.

Die meisten Systeme haben die Datei /bin/sh, aber sie ist ein symbolischer Link und ruft sh nicht auf. In Ubuntu ist /bin/sh ein symbolischer Link zur Shell Dash. Wir können dies überprüfen, indem Sie den folgenden Befehl ausführen.

$ file -h /bin/sh

Die Ausgabe unten zeigt, dass /bin/sh ein symbolischer Link zu dash ist.

/bin/sh: symbolic link to dash

Lassen Sie uns #!/bin/sh zu einem Skript hinzufügen.

#!/bin/sh

printf "sh points to dash!\n"

Das obige Skript gibt als Interpreter /bin/sh an. Da jedoch /bin/sh auf dash zeigt, führt die Shell dash das Skript als Interpreter aus.

Bash und seine Verwendung

Bash steht für Bourne Again Shell. Wie sh ist es ein Befehlssprachenprozessor und eine Shell. bash ist jedoch eine Obermenge von sh. Es unterstützt Funktionen von sh und bietet weitere Erweiterungen und Funktionen. Bash ist die Standard-Shell für Linux-Betriebssysteme.

Anfangs entsprach Bash den POSIX-Standards, aber im Laufe der Zeit folgte sie nicht mehr den POSIX-Standards, da weitere Funktionen und Erweiterungen hinzugefügt wurden. Bash kann jedoch weiterhin im POSIX-Modus verwendet werden, indem das Flag -posix gesetzt wird, wie unten gezeigt.

$ bash --posix

Lassen Sie uns ein Bash-Skript schreiben, das dem POSIX-Standard entspricht.

#!/bin/bash

set -o posix
printf "we are using bash shell!\n"

Der bash-Interpreter führt das obige Skript aus, da es in der ersten Zeile #!/bin/bash angegeben wurde.

Der Befehl set aktiviert Optionen im Skript. In unserem Fall ermöglicht es der Bash-Shell, das Skript im POSIX-Modus auszuführen.

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Verwandter Artikel - Linux Shell

Verwandter Artikel - Linux Bash