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

So finden Sie das Verzeichnis, in dem sich ein Bash -Skript aus dem Skript befindet
Bei der Arbeit mit Bash -Skripten ist es hilfreich, den Skript -Ort zu kennen. Dies kann besonders hilfreich sein, wenn Sie mit relativen Dateipfaden arbeiten oder wenn Sie versuchen, andere Skripte oder Befehle aus dem Skript auszuführen. In diesem Artikel werden wir uns auf verschiedene Möglichkeiten ansehen, um das Verzeichnis eines Bash -Skripts aus dem Skript selbst zu bestimmen.

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

Während des Bash -Skripts benötigen Sie möglicherweise den Standort des Skripts, um verschiedene Aufgaben zu automatisieren. Es gibt zwei Arten von Pfaden unter Linux:

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

Eine der häufigsten Möglichkeiten, um den Ort eines Bash -Skripts zu bestimmen, besteht darin, die zu verwenden PWD Befehl. Der PWD Befehl (Drucken Arbeitsverzeichnis) wird das aktuelle Verzeichnis zeigen.

In vielen Situationen einfach verwenden PWD Der Befehl funktioniert nicht, da er nur den Weg des aktuell funktionierenden Verzeichnisses gibt.

Zum Beispiel, wenn sich das Skript in der befindet Downloads Verzeichnis und aus der Ausführung von der Desktop Dann enthält der Ausgang die /home/usr/desktop nicht der Speicherort der Bash -Skriptdatei, nämlich /home/usr/downloads.

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

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

Eine andere Möglichkeit, das Verzeichnis eines Bash -Skripts zu bestimmen, besteht darin, die zu verwenden Dirname Befehl. Der Dirname Der Befehl nimmt einen Dateipfad als Argument ein und gibt den Verzeichnisanteil des Pfades zurück.

Benutzen Dirname Befehl zur Bestimmung des Verzeichnisses eines Skripts. Sie würden den Befehl mit dem Pfad bis zu den letzten Nicht-Slash-Komponenten zum Skript als Argument aufrufen.

Für weitere Details zu Dirname Führen Sie die folgenden Befehle im Terminal aus:

$ MAN DIRNAME

Nur Dirname wird nicht funktionieren, wir brauchen einen anderen Befehl, der ist Readlink. Der Readlink Befehlsdruck hat den symbolischen Link gelöst. Erhalten Sie weitere Informationen zu diesem Befehl, indem Sie ausführen:

$ MAN LEADLINK

Jetzt, Erstellen Sie ein Skript:

$ sudo nano myscript.Sch

Und Typ:

#!/Bin/Bash
echo "Der Bash -Skriptpfad ist $ (DirName -" $ (readlink -f - "$ 0") ";)";

Um die Verwendung des Skripts auszuführen:

$ bash myscript.Sch

Ändern wir das Verzeichnis und sehen, was die Ausgabe ist:

Notiz: In einem Fall funktioniert das obige Skript nicht, wenn die Datei bezogen wird, anstatt auszuführen, wie sie in der folgenden Ausgabe zu sehen ist:

Die Ausgabe ist /home/sam/desktop Während die Skriptdatei in der vorhanden ist /home/sam Verzeichnis.

Abschluss

Zusammenfassend gibt es mehrere Möglichkeiten, das Verzeichnis eines Bash -Skripts aus dem Skript selbst zu bestimmen. Der Dirname zusammen mit Readlink Das Dienstprogramm kann verwendet werden, um das Verzeichnis eines Skripts zu bestimmen. Einfach einfach benutzen PWD Der Befehl funktioniert nicht, da es nur das derzeit funktionierende Verzeichnis gibt.