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

Vollständigen Pfad aus Bash-Skript abrufen?

Ich habe ein Bash-Skript, das mit relativen Pfaden arbeitet. Es muss ein Arbeitsverzeichnis haben, das dem Verzeichnis entspricht, in dem das Skript gespeichert ist. Dies funktioniert gut, solange ich es von der Eingabeaufforderung aus starte, da ich zuerst in das Verzeichnis des Skripts wechseln kann. Wenn ich jedoch einen Symlink zum Skript in /etc/cron.hourly erstelle, bricht das Skript ab.

Ich brauche eine Möglichkeit, das Bash-Skript in das Verzeichnis zu wechseln, in dem das Skript gespeichert ist. Bisher bin ich jedoch erfolglos. Gibt es eine einfache Möglichkeit, dies zu tun, auch wenn das Skript von Cron über einen Symlink aufgerufen wird?

Akzeptierte Antwort:

Sie sollten dazu in der Lage sein.

  • Der $0-Parameter wird zum vollständigen Pfad (einschließlich Name) des Skripts erweitert, als es aufgerufen wurde.
  • Die eingebaute Shell-Funktion test (oder [ ] ) kann mit -L testen, ob ein Pfad ein Symlink ist
  • ls -l , wenn es auf einen symbolischen Link angewendet wird, ergibt eine einzelne Ausgabezeile mit dem wahren Pfad als letztes Feld.

Das reicht aus, um den Ort der Quelle zu entdecken. Natürlich könnte das ein Symlink sein, was erfordern würde, dass Sie dies rekursiv tun …


Linux
  1. Verhindern, dass ein Bash-Skript gleichzeitig ausgeführt wird

  2. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner?

  3. Warum kann ich Cd nicht in einem Bash-Skript verwenden?

  4. Führen Sie das Bash-Skript von der URL aus

  5. Öffnen Sie Vim aus einem Bash-Shell-Skript heraus

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

Zeigt nur den aktuellen Verzeichnisnamen (nicht den vollständigen Pfad) an der Bash-Eingabeaufforderung an

Wie führt man ein Bash-Skript aus?

Wie bekomme ich Elemente aus der Liste in Bash?

Wie extrahiert man den Dateinamen ohne die Erweiterung aus einem vollständigen Pfad?

Wie führe ich ein Bash-Skript über einen absoluten Pfad aus?