Grundsätzlich muss ich das Skript mit Pfaden ausführen, die sich auf den Speicherort der Shell-Skriptdatei beziehen. Wie kann ich das aktuelle Verzeichnis in das gleiche Verzeichnis ändern, in dem sich die Skriptdatei befindet?
Sie können die pushd
/ popd
con cd $(dirname "${0}")
et cd -
damit es auf anderen Shells funktioniert, wenn diese eine pwd -L
.
15 Stimmen
Ist das wirklich ein Duplikat? In dieser Frage geht es um ein "Unix-Shell-Skript", in der anderen speziell um Bash.
3 Stimmen
@BoltClock: Diese Frage wurde fälschlicherweise geschlossen. In der verlinkten Frage geht es um Bash. In dieser Frage geht es um Unix-Shell-Programmierung. Beachten Sie, dass die akzeptierten Antworten sehr unterschiedlich sind!
0 Stimmen
@Dietrich Epp: Sie haben Recht. Es scheint, dass die Wahl der akzeptierten Antwort durch den Fragesteller und die Hinzufügung des [bash]-Tags (wahrscheinlich als Reaktion darauf) mich dazu veranlasst hat, die Frage als Antwort auf eine Markierung als Duplikat zu kennzeichnen.
3 Stimmen
Ich denke, diese Antwort ist besser: Abrufen des Quellverzeichnisses eines Bash-Skripts aus einer
2 Stimmen
Mögliches Duplikat von Abrufen des Quellverzeichnisses eines Bash-Skripts aus
1 Stimmen
Google brachte mich hierher, da ich nach einer reinen Posix-Implementierung der Lösung suchte. Nach etwas mehr Suche stieß ich auf diese sehr ausführliche Antwort, die erklärt, warum es nicht geht und wie man es umgehen kann, indem man die Unterstützung für gängige Shells shimmt. stackoverflow.com/a/29835459/816584
0 Stimmen
Kann die Ausgabe des Befehls "pwd" nicht zu Beginn des Skripts einer Variablen zugewiesen werden, die dann während des gesamten Skripts verwendet wird? Ich bin mir nicht sicher, ob ich die Frage richtig verstanden habe