Eine kurze Erläuterung der Unterschiede zwischen den verschiedenen Möglichkeiten zum Ausführen von .sh-Dateien in Ubuntu

Eine kurze Erläuterung der Unterschiede zwischen den verschiedenen Möglichkeiten zum Ausführen von .sh-Dateien in Ubuntu

Vorwort

Verschiedene Methoden zur Skriptausführung führen zu unterschiedlichen Ergebnissen, insbesondere in der Bash-Umgebung. Es gibt ungefähr die folgenden Möglichkeiten, ein Skript auszuführen.

Schreiben Sie zunächst eine einfache test.sh-Datei:

#!/bin/bash

read -p "Bitte geben Sie Ihren Vornamen ein:" Vorname
read -p "Bitte geben Sie Ihren Nachnamen ein:" Nachname
echo -e "\nIhr vollständiger Name ist: $Vorname $Nachname"

Ausführen mit sh test.sh

Verwenden Sie sh test.sh, um die Skriptdatei auszuführen. Diese Methode gibt an, dass die Datei test.sh mit der sh-Shell ausgeführt wird. sh wurde durch bash ersetzt. Obwohl wir in test.sh deklarieren, dass #!/bin/bash zum Ausführen unserer Datei verwendet wird, funktioniert #!/bin/bash nicht mehr, wenn sh anstelle von bash verwendet wird.

Führen Sie test.sh mit Bash aus

Diese Methode entspricht im Prinzip eigentlich dem von sh test.sh, außer dass wir die Shell /bin/bash verwenden, um unsere Skriptdatei auszuführen.

Sie können also tatsächlich auch dash test.sh‘ verwenden. Es hängt nur davon ab, welche Shell Sie zum Ausführen des Skripts verwenden möchten. Es gibt jedoch einige Unterschiede zwischen sh, bash und dash. Einige Schlüsselwörter wie let werden von bash unterstützt, während sh und dash dies nicht unterstützen. Verwenden Sie für einige Schlüsselwörter bash.

Verwenden Sie point.Execute

Bevor Sie diese Methode verwenden, müssen Sie der Datei Ausführungsberechtigungen hinzufügen:

$ chmod +x test.sh

Nachdem Sie die Ausführungsberechtigung hinzugefügt haben, können Sie ./test.sh verwenden, um das Skript auszuführen. Diese Methode ist dieselbe wie bash test.sh. Standardmäßig wird bin/bash verwendet, um unser Skript auszuführen.

Nur diese Ausführungsmethode erfordert das Hinzufügen von Ausführungsberechtigungen zur Datei, bei anderen Methoden ist dies nicht erforderlich.

Ausführen mit Quelle

Mithilfe der Quelle können wir unser Skript auch direkt ausführen:

Quelle test.sh

Der Unterschied

Wenn wir sh test.sh, bash test.sh und ./test.sh verwenden, um das Skript auszuführen, verwendet das test.sh-Skript eine neue Shell-Umgebung, um die Befehle im Skript auszuführen. Das heißt, wenn diese drei Methoden verwendet werden, wird das Skript tatsächlich in der Shell des untergeordneten Prozesses ausgeführt. Wenn der untergeordnete Prozess abgeschlossen ist, werden die Variablen und Operationen im untergeordneten Prozess beendet und nicht an den übergeordneten Prozess zurückgegeben.

Sie können das nicht verstehen? ? Schauen Sie sich das folgende Beispiel an:

[root@ubuntu] # bash test.sh
Bitte geben Sie Ihren Vornamen ein: yao <==Vornamen eingeben
Bitte geben Sie Ihren Nachnamen ein: pentonBin <==Nachnamen eingeben

Ihr vollständiger Name ist: yao pentonBin
[root@ubuntu] # echo $vorname
       <==Keine Ausgabe hier

Was passiert, wenn Sie die Quellmethode zum Ausführen des Skripts verwenden?

[root@ubuntu] # Quelle test.sh
Bitte geben Sie Ihren Vornamen ein: yao <==Vornamen eingeben
Bitte geben Sie Ihren Nachnamen ein: pentonBin <==Nachnamen eingeben

Ihr vollständiger Name ist: yao pentonBin
[root@ubuntu] # echo $vorname
yao <== hier wird der Vorname ausgegeben

Das heißt, die Quellmethode führt das Skript im übergeordneten Prozess aus und alle Vorgänge von test.sh werden in der ursprünglichen Shell wirksam. Aus diesem Grund müssen Sie source ~/.bashrc anstelle von bash ~/.bashrc verwenden, wenn Sie sich nicht vom System abmelden und möchten, dass einige in ~/.bashrc geschriebene Einstellungen wirksam werden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem der Übergabe von Parametern mit Leerzeichen, wenn Shell Python-Dateien ausführt
  • Verwenden Sie ein Linux-Shell-Skript, um die geplante FTP-Ausführung des Batch-Downloads angegebener Dateien zu implementieren
  • Verwenden von Shell-Skripten zum automatischen Ausführen von Skriptdateien in Linux
  • Was tun, wenn Linux bei der Ausführung einer .sh-Datei die Meldung „Keine solche Datei oder kein solches Verzeichnis“ anzeigt (drei Lösungen)
  • Perfekte Lösung zur Implementierung einer „multithreaded“ Skriptausführung in Shell
  • Lösung für die Eingabeaufforderung „Keine solche Datei oder kein solches Verzeichnis“ bei der Ausführung im Shell-Skript

<<:  Ausführliche Erklärung der Modi und Umgebungsvariablen in Vue CLI

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.24

Artikel empfehlen

Beispielcode mit Vue-Router in HTML

Einführung in Vue und Vue-Router <script src=&...

Detaillierte Erklärung zur Erstellung von Schießspielen mit CocosCreator

Inhaltsverzeichnis Szeneneinstellung Spielressour...

Natives JS zur Realisierung eines einfachen Schlangenspiels

In diesem Artikel wird der spezifische Code von j...

Vue + Element realisiert Paging-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

So stellen Sie Node.js mit Docker bereit

Vorwort Node wird als mittlere Schicht im Projekt...

So fügen Sie eindeutige Indizes für Felder in MySQL hinzu und löschen sie

1. PRIMARY KEY hinzufügen (Primärschlüsselindex) ...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

Verwendung und Prinzipien von Provide und Inject in Vue3

Vorwort: Beim Übergeben von Daten zwischen überge...

Einführung in das MySQL Connection Control Plugin

Inhaltsverzeichnis 1. Einführung in das Verbindun...

18 allgemeine Befehle in der MySQL-Befehlszeile

Bei der täglichen Wartung und Verwaltung von Webs...

Detaillierte Analyse des MySQL-Datentyps DECIMAL

Vorwort: Wenn wir Dezimalzahlen speichern müssen ...