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

Mehrere Möglichkeiten, Axios in Vue zu kapseln

Inhaltsverzeichnis Basisversion Schritt 1: Axios ...

So übergeben Sie Parameter über CSS an JS

1. Hintergrund, der durch CSS übergeben werden mu...

Einführung in die Verwendung des Base-Link-Tags Base

<br />Wenn Sie auf den Link klicken, wird di...

border-radius ist eine Methode zum Hinzufügen abgerundeter Ränder zu Elementen

border-radius:10px; /* Alle Ecken sind mit einem ...

Zusammenfassung der verschiedenen Haltungen der MySQL-Berechtigungseskalation

Inhaltsverzeichnis 1. Schreiben Sie Webshell in d...

JavaScript-Beispielcode zum Ermitteln, ob eine Datei vorhanden ist

1. Geschäftsszenario Ich habe kürzlich Entwicklun...

MySQL 8.0.13 Installations- und Konfigurations-Tutorial unter CentOS7.3

1. Grundlegende Umgebung 1. Betriebssystem: CentO...