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

Laufendes Skript mit „. “ Und mit „Quelle“?

  1. Ich habe mich gefragt, ob die folgenden zwei Möglichkeiten zum Ausführen eines Bash-Skripts
    gleichwertig sind?

    . ./myScript.sh
    
    source myScript.sh
    
  2. Führen sie beide den Inhalt des Skripts aus, anstatt das Skript auszuführen, d. h. erstellen sie keine Subshell zum Ausführen des Skripts?

Akzeptierte Antwort:

  1. Sie sind in bash äquivalent, da sie genau dasselbe tun. Andererseits source ist 5 Zeichen länger und ist nicht auf reine POSIX-Shells oder Bourne portierbar, wohingegen . (Punkt) ist, also mache ich mir nie die Mühe, source zu verwenden .

  2. Das ist richtig – das Sourcing einer Datei führt die Befehle in der aktuellen Shell aus und wirkt sich auf Ihre aktuelle Shell-Umgebung aus. Sie können immer noch Argumente an die Quelldatei übergeben und Bash wird tatsächlich in $PATH suchen für den Dateinamen wie ein normaler Befehl, wenn er keine Schrägstriche enthält.

Hat nichts mit der ursprünglichen Frage von . zu tun vs source , aber in Ihrem Beispiel

. ./myScript.sh 

ist nicht identisch mit

source myScript.sh

denn während . und source sind funktional identisch, myScript.sh und ./myScript.sh sind nicht das Gleiche. Seit ./myScript.sh einen Schrägstrich enthält, wird er als Pfad interpretiert und die Shell verwendet einfach ./myScript.sh . Allerdings myScript.sh hat keinen Schrägstrich, also macht die Shell einen $PATH erstmal danach suchen. Dies ist das von POSIX spezifizierte Standardverhalten für . . Die meisten Shells verwenden dies standardmäßig, obwohl sie Erweiterungen (wie das Suchen im aktuellen Arbeitsverzeichnis nach der Pfadsuche) oder Optionen hinzufügen können, um das Verhalten von . zu ändern /source .


Linux
  1. So erfassen Sie Terminalsitzungen und geben sie mit dem Linux-Skriptbefehl aus

  2. Wie fügt man Benutzerkonto UND Passwort automatisch mit einem Bash-Skript hinzu?

  3. Shell-Skript parallel ausführen

  4. Linux-Skript, um zu überprüfen, ob der Prozess ausgeführt wird, und auf das Ergebnis zu reagieren

  5. Ausführen von phpmyadmin und suphp

Open-Source-Mindmapping mit Draw.io

Übertragen Sie mit diesem Open-Source-Tool Dateien zwischen Ihrem Telefon und Linux

Eine Einführung in Diffs und Patches

So schreiben Sie ein Bash-Skript mit Beispielen

Heimautomatisierung:Home Assistant mit Podman ausführen

Basisname mit Leerzeichen in einem Bash-Skript?