Wenn Sie Shell-Skripte unter Linux schreiben, müssen Sie als Erstes eine Shebang-Zeile schreiben, die den Interpreter angibt, der zum Ausführen des Skripts verwendet werden soll. Die Shebang-Zeile beginnt normalerweise mit #! und dann wird ein bestimmter Interpreter verwendet, auf den ein Benutzer zugreifen möchte.
Zwei häufig verwendete Interpreter sind /bin/sh und /bin/bash. Obwohl beide Interpreter mit der Bourne-Shell-Syntax kompatibel sind, gibt es einige wichtige Unterschiede zwischen ihnen, die sich auf das Verhalten Ihrer Shell-Skripte auswirken können.
Obwohl /bin/sh und /bin/bash beide zur Unix-Shell gehören, weisen sie einige wesentliche Unterschiede auf, die sie einzigartig machen. In diesem Beitrag wird erläutert, was „#!/bin/sh“ und „#!/bin/bash“ ist, sowie auf die bemerkenswerten Unterschiede zwischen diesen.
- Was ist /bin/sh?
- Was ist /bin/bash?
- Hauptunterschiede zwischen /bin/sh und /bin/bash
Was ist #!/bin/sh?
Die Shebang-Linie #!/bin/sh weist den Interpreter an, beim Ausführen eines Codes das Shell-Skript zu verwenden. In diesem Fall bezieht sich /bin/sh auf die Bourne-Shell, eine einfache und leichte Shell, die auf den meisten Unix-basierten Systemen, einschließlich Linux, verfügbar ist.
Skripte, die #!/bin/sh verwenden, werden normalerweise in der Bourne-Shell-Syntax geschrieben, die eine Teilmenge des POSIX-Shell-Standards ist. Da es sich bei /bin/sh um eine leichtgewichtige Shell handelt, sind Skripte, die diesen Interpreter verwenden, tendenziell besser auf verschiedene Unix-basierte Systeme portierbar.
Wie benutzt man #! /bin/sh unter Linux?
Sie können #!/bin/sh verwenden, indem Sie eine Bash-Skriptdatei öffnen und dann oben diese Zeile wie unten gezeigt schreiben:
Was ist #!/bin/bash?
Der #!/bin/bash ist eine Shebang-Zeile in Linux, die die Verwendung eines Bash-Shell-basierten Interpreters für die Shell-Skriptausführung angibt. Bash ist eine weiterentwickelte Version der älteren Bourne-Shell, die auch als „Bourne-Again-SHell“ bekannt ist.
Zu diesen Funktionen gehören Befehlszeilenbearbeitung, Verlauf und programmierbare Vervollständigung. Wenn ein Skript mit der Shebang-Zeile #!/bin/bash ausgeführt wird, wird das Skript von der Bash-Shell interpretiert, die dann die im Skript angegebenen Befehle ausführt.
Wie verwende ich #!/bin/bash unter Linux?
Sie müssen #!/bin/bash oben in ein Bash-Skript schreiben, wie unten gezeigt:
Hauptunterschiede zwischen /bin/sh und /bin/bash
Die wichtigsten Unterschiede zwischen diesen beiden werden in diesem Abschnitt besprochen.
Merkmale: Einer der größten Unterschiede zwischen diesen Shell-Skripten besteht darin, dass die Bash-Shell über mehr Features und Funktionalitäten verfügt als die .sh-Shell. Zu diesen Funktionen gehören Befehlszeilenvervollständigung, Verlauf und Jobkontrolle. Darüber hinaus enthält Bash-Skript Arrays, Variablen und Funktionen, was das Schreiben komplexer Skripte erleichtert.
Leistung: Die Leistung von Sh- und Bash-Shells kann je nach Aufgabe erheblich variieren. „.sh“ ist für einfache Aufgaben schneller als Bash, während Bash für kompliziertere Aktivitäten wie das Ausführen umfangreicher Skripts besser geeignet ist.
Syntax: Die Hauptsyntax von sh und bash ist nahezu identisch, einige wichtige Unterschiede zwischen den Shells können jedoch zu Kompatibilitätsproblemen führen. Beispielsweise verwendet bash für bedingte Befehle eckige Klammern, sh jedoch runde Klammern. Außerdem ermöglicht Bash die Verwendung doppelter eckiger Klammern, was in einem SH-Skript nicht zulässig ist.
Abschluss
/bin/sh und /bin/bash sind beide Unix-Shell-Skripte, bieten jedoch unterschiedliche Zwecke, die sie einzigartig machen. Bash umfasst viele erweiterte Funktionen, die in der Bourne-Shell fehlen, wie z. B. erweiterte Verlaufsverwaltung, Tab-Vervollständigung und Prozessersetzung. Andererseits ist die Bourne-Shell schneller und effizienter als Bash, da sie über eine kleinere Codebasis und weniger zu verwaltende Funktionen verfügt. Ein detaillierter Vergleich zwischen diesen beiden wurde in diesem Artikel besprochen.