So finden Sie das Verzeichnis, in dem sich ein Bash-Skript befindet, im Skript

Bei der Arbeit mit Bash-Skripten ist es hilfreich, den Speicherort des Skripts zu kennen. Dies kann besonders hilfreich sein, wenn Sie mit relativen Dateipfaden arbeiten oder versuchen, andere Skripte oder Befehle innerhalb des Skripts auszuführen. In diesem Artikel werfen wir einen Blick auf verschiedene Möglichkeiten, das Verzeichnis eines Bash-Skripts aus dem Skript selbst heraus zu bestimmen.

So finden Sie das Verzeichnis, in dem sich ein Bash-Skript befindet, im Skript

Während der Bash-Skripterstellung benötigen Sie möglicherweise den Speicherort des Skripts, um verschiedene Aufgaben zu automatisieren. Unter Linux gibt es zwei Arten von Pfaden:

  • Verwandter Pfad: Relativ ist das aktuelle Arbeitsverzeichnis.
  • Absoluter Pfad: Dies ist der vollständige Pfad des Verzeichnisses und der Dateien.

Eine der gebräuchlichsten Methoden, den Speicherort eines Bash-Skripts zu bestimmen, ist die Verwendung von pwd Befehl. Der pwd Befehl (Arbeitsverzeichnis drucken) zeigt das aktuelle Verzeichnis an.

Also in vielen Situationen einfach verwenden pwd Der Befehl funktioniert nicht, da er nur den Pfad des aktuell arbeitenden Verzeichnisses angibt.

Wenn sich das Skript beispielsweise in der befindet Downloads Verzeichnis und wird aus dem ausgeführt Desktop dann enthält die Ausgabe das /home/usr/Desktop nicht der Speicherort der Bash-Skriptdatei /home/usr/Downloads.

In diesem Tutorial geht es darum, den Pfad des Verzeichnisses, in dem sich die Bash-Skriptdatei befindet, aus dem Skript heraus zu ermitteln.

So erhalten Sie den Verzeichnispfad, in dem sich die Bash-Skriptdatei befindet

Eine andere Möglichkeit, das Verzeichnis eines Bash-Skripts zu bestimmen, ist die Verwendung von Verzeichnisname Befehl. Der Verzeichnisname Der Befehl verwendet einen Dateipfad als Argument und gibt den Verzeichnisteil des Pfads zurück.

Benutzen Verzeichnisname Um das Verzeichnis eines Skripts zu bestimmen, rufen Sie den Befehl mit dem Pfad bis zu den letzten Nicht-Schrägstrich-Komponenten des Skripts als Argument auf.

Weitere Informationen zu Verzeichnisname Führen Sie die folgenden Befehle im Terminal aus:

$ man dirname

Nur Verzeichnisname wird nicht funktionieren, wir brauchen also einen anderen Befehl Leselink. Der Leselink Der Befehl print löste den symbolischen Link auf. Weitere Informationen zu diesem Befehl erhalten Sie, indem Sie Folgendes ausführen:

$ man readlink

Jetzt, ein Skript erstellen:

$ sudo nano myScript.sh

Und geben Sie Folgendes ein:

#!/bin/bash

echo „Der Bash-Skriptpfad ist $(dirname — „$(readlink -f – „$0″)“;)“;

Um das Skript auszuführen, verwenden Sie:

$ bash myScript.sh

Lassen Sie uns das Verzeichnis ändern und sehen, was die Ausgabe ist:

Notiz: In einem Fall funktioniert das obige Skript nicht, wenn die Datei als Quelle bereitgestellt und nicht ausgeführt wird, wie in der folgenden Ausgabe zu sehen ist:

Die Ausgabe ist /home/sam/Desktop wohingegen die Skriptdatei im vorhanden ist /home/sam Verzeichnis.

Abschluss

Zusammenfassend lässt sich sagen, dass es mehrere Möglichkeiten gibt, das Verzeichnis eines Bash-Skripts aus dem Skript selbst heraus zu bestimmen. Der Verzeichnisname zusammen mit Leselink Mit dem Dienstprogramm kann das Verzeichnis eines Skripts ermittelt werden. Allerdings einfach mit pwd Der Befehl funktioniert nicht, da er nur das aktuell arbeitende Verzeichnis angibt.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen