Wie bekomme ich das Verzeichnis, in dem sich eine Bash-Skript-Datei befindet, wenn diese Skript-Datei von einem anderen eingeschlossen wird (was es von diese Frage )?
/script1.sh
%Vor%/dir2/script2.sh
%Vor%Dies ist das Skript, das ich versuche "zu reparieren"
/etc/init.d/silvercar-gameserver (einzigartig für jede Instanz)
%Vor%/opt/silvercar-gameserver/gameserver.sh.inc (nicht für jede Installation geändert werden. ist in Svn)
%Vor%Um die Datei zu erhalten, kennt das übergeordnete Skript offensichtlich den Pfad, unter dem das untergeordnete Skript ist. Setzen Sie es als Variable und prüfen Sie dann im untergeordneten Skript nach dieser Variablen. Wenn es verfügbar ist, wissen Sie, dass es stammt und Sie können diesen Pfad verwenden, andernfalls verwenden Sie den normalen Trick in der Frage, die Sie verknüpft haben.
%Vor%Wenn Sie bash 3.0 oder neuer haben, können Sie BASH_SOURCE verwenden, um genau das zu erhalten, was Sie brauchen, ohne auf das aufrufende Programm angewiesen zu sein, um irgendwelche Umgebungsvariablen für Sie festzulegen. Siehe unten für ein Beispiel:
%Vor%Die Ausgabe ist:
%Vor%