Exkurs ‐ Pfade in UNIX Linux Umgebungen - mkappus1/DatenmanagementMTHS24 GitHub Wiki

Natürlich, hier ist die Erklärung in der Sie-Form:

Die Funktionsweise von Pfaden in Unix-Umgebungen (einschließlich WSL, dem "Windows Subsystem for Linux") kann anfangs etwas verwirrend sein. Ich werde es Ihnen Schritt für Schritt erklären. Wichtig ist, zu verstehen, dass Pfade angeben, wo sich Dateien oder Programme auf Ihrem System befinden. Es gibt absolute und relative Pfade, und dies ist der Schlüssel zu Ihrem Verständnis.

1. Absolute Pfade

Ein absoluter Pfad beginnt immer beim Wurzelverzeichnis / und gibt den genauen Ort einer Datei oder eines Ordners im Dateisystem an, unabhängig davon, in welchem Verzeichnis Sie sich gerade befinden.

Beispiel:

  • /home/user/documents/file.txt

Sie können Befehle mit absoluten Pfaden ausführen, ohne das aktuelle Verzeichnis wechseln zu müssen:

# Beispiel: Ein Programm in einem anderen Ordner (hier im Ordner home/user/scripts) starten
/home/user/scripts/my_script.sh

In diesem Beispiel wird ein Skript aus einem anderen Ordner ausgeführt, ohne dass Sie Ihr aktuelles Verzeichnis ändern müssen.

2. Relative Pfade

Ein relativer Pfad gibt den Ort einer Datei oder eines Verzeichnisses relativ zu Ihrem aktuellen Verzeichnis an. Hierbei wird . für das aktuelle Verzeichnis und .. für das übergeordnete Verzeichnis verwendet.

Beispiel: Wenn Sie sich im Verzeichnis /home/user befinden und eine Datei im Unterverzeichnis documents öffnen möchten:

# Relativer Pfad zum aktuellen Verzeichnis
cd documents

Oder:

# Sie können die Datei direkt mit einem relativen Pfad öffnen
nano ./documents/file.txt

(nano ist übrigens ein kleiner einfacher Texteditor)

3. Der Befehl ./ (nicht unbedingt so rleevant für uns)

Wenn Sie ein Programm oder Skript aus dem aktuellen Verzeichnis ausführen möchten, verwenden Sie den relativen Pfad ./, um anzugeben, dass sich das Programm im aktuellen Verzeichnis befindet:

# Ein Programm im aktuellen Verzeichnis ausführen
./my_program.sh

4. Die PATH-Umgebungsvariable (kann dann verwendet werden wenn ein bestimmter Pfad häufig berücksichtig werden soll)

Wenn Sie ein Programm oder Skript ausführen möchten, ohne den gesamten Pfad anzugeben, wird die PATH-Umgebungsvariable verwendet. Diese Umgebungsvariable enthält eine Liste von Verzeichnissen, die automatisch durchsucht werden, wenn Sie einen Befehl eingeben.

Beispiel:

  • Wenn Sie python3 eingeben, durchsucht das System die Verzeichnisse in der PATH-Variable nach einer ausführbaren Datei namens python3 und führt diese aus. Sie können sich den Inhalt der PATH-Variablen anzeigen lassen, indem Sie folgendes eingeben:
echo $PATH

Wenn Sie möchten, dass ein bestimmtes Skript jederzeit ausführbar ist, ohne den Pfad explizit anzugeben, können Sie das Verzeichnis, in dem sich das Skript befindet, zur PATH-Variable hinzufügen:

export PATH=$PATH:/home/user/scripts

Dieser Befehl fügt den Pfad zur PATH Variablen für diese Sitzung hinzu. Diese Änderung ist temporär und gilt nur für die aktuelle Sitzung. Sobald Sie das Terminal schliessen, wird die Änderung verworfen.

5. Dateien als Argumente verwenden

Sie können Dateien in anderen Verzeichnissen auch als Argumente für Befehle verwenden, ohne das Verzeichnis wechseln zu müssen. Hierbei geben Sie einfach den Pfad zur Datei als Argument an.

Beispiel: Sie befinden sich im Verzeichnis /home/user/scripts und möchten die Datei /home/user/documents/file.txt mit dem Befehl cat anzeigen:

cat /home/user/documents/file.txt

Zusammenfassung:

  • Absolute Pfade beginnen immer mit / und geben den exakten Ort einer Datei oder eines Programms im Dateisystem an.
  • Relative Pfade sind abhängig von Ihrem aktuellen Verzeichnis und nutzen . und .. zur Navigation.
  • ./ gibt an, dass Sie eine Datei aus dem aktuellen Verzeichnis ausführen.
  • Die PATH-Umgebungsvariable gibt an, in welchen Verzeichnissen nach ausführbaren Dateien gesucht wird.
  • Dateien als Argumente können durch absolute oder relative Pfade an Befehle übergeben werden.

Hier gibt es ein kurzes Anleitungsvideo zu diesem Thema (ca. 10 Minuten, auf Englisch)