So finden Sie das Verzeichnis, in dem sich ein Bash-Skript innerhalb des Skripts befindet

So Finden Sie Das Verzeichnis In Dem Sich Ein Bash Skript Innerhalb Des Skripts Befindet



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 innerhalb des Skripts befindet

Beim Erstellen von Bash-Skripten 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, um 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 mit pwd Der Befehl funktioniert nicht, da er nur den Pfad des aktuellen Arbeitsverzeichnisses angibt.



Wenn sich das Skript beispielsweise in der Downloads Verzeichnis und ausgeführt von der Schreibtisch dann enthält die Ausgabe die /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, innerhalb des Skripts abzurufen.





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 Dirname Befehl. Der Dirname Der Befehl nimmt einen Dateipfad als Argument und gibt den Verzeichnisteil des Pfads zurück.

Benutzen Dirname Um das Verzeichnis eines Skripts zu ermitteln, würden Sie den Befehl mit dem Pfad bis zu den letzten Nicht-Schrägstrich-Komponenten des Skripts als Argument aufrufen.



Weitere Informationen zu Dirname folgende Befehle im Terminal ausführen:

$ Mann Dirname

Nur Dirname wird nicht funktionieren, wir brauchen also einen anderen Befehl Leselink . Der Leselink Der Befehl print hat den symbolischen Link aufgelöst. Weitere Informationen zu diesem Befehl erhalten Sie, indem Sie Folgendes ausführen:

$ Mann Leselink

Jetzt, ein Skript erstellen :

$ sudo nano myScript.sh

Und tippe:

#!/bin/bash

Echo 'Der Pfad des Bash-Skripts lautet $(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 bezogen wird, anstatt ausgeführt zu werden, wie 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 lässt sich sagen, dass es mehrere Möglichkeiten gibt, das Verzeichnis eines Bash-Skripts innerhalb des Skripts selbst zu bestimmen. Der Dirname zusammen mit Leselink Dienstprogramm kann verwendet werden, um das Verzeichnis eines Skripts zu bestimmen. Allerdings einfach mit pwd Der Befehl funktioniert nicht, da er nur das aktuelle Arbeitsverzeichnis angibt.