Ich muss ein Skript ausführen, das auf eine Datei im selben Pfad zugreift, in dem sie sich befindet.
Zum Beispiel: Ich habe das Skript in /home/me/folder/script.sh
und dieses Skript greift auf die Datei zu /home/me/folder/myfile
. Da sich die Datei im selben Pfad des Skripts befindet, verwende ich nur den Namen myfile
und nicht den vollständigen Pfad.
Aber wenn ich es laufen lasse /tmp/
, wie:
/tmp$ /home/me/folder/script.sh
es gibt mir:
myfile: No such file or directory
Wie kann ich im Skript sagen, dass sich die Datei auf demselben Pfad befindet wie das Skript selbst?
shell
scripting
shell-script
path
Tom Brito
quelle
quelle
Antworten:
Wie wäre es
$(dirname "$0")/myfile
?quelle
Sie können nicht unter allen Umständen wissen, aber oft (nicht immer), wenn Sie ein Skript nach Pfad ausführen, anstatt die Shell suchen zu lassen
$PATH
, befindet sich der Pfad zum Skript in$0
. Sie können danndirname "$0"
oder verwenden${0%/*}
, um den Pfad zu erhalten.quelle
Normalerweise würde ich so etwas am Anfang meines Skripts tun:
Oder um den vollständigen Pfadnamen in das Verzeichnis des Skripts zu übertragen (anstelle eines relativen Pfadnamens):
Dann verweisen Sie einfach
${SCRIPTDIR}
wo nötig.quelle