klingt wie Sie wollen:
path="$(pwd)/some/path"
Die $(
öffnet sich ein Sub-Shell (und die )
schließt es), wo der Inhalt Wird als Skript ausgeführt, sodass alle Ausgaben an dieser Position in der Zeichenfolge eingefügt werden.
Weitere nützlich oft wird das Verzeichnis des Skripts erhalten, die ausgeführt wird:
dot="$(cd "$(dirname "$0")"; pwd)"
path="$dot/some/path"
Die nützlichen ist, weil es ganz gleich, auf den gleichen Pfad löst, wo Sie sind, wenn Sie das Skript ausführen:
> pwd
~
> ./my_project/my_script.sh
~/my_project/some/path
statt:
> pwd
~
> ./my_project/my_script.sh
~/some/path
> cd my_project
> pwd
~/my_project
> ./my_script.sh
~/my_project/some/path
Komplexere aber wenn Sie das Verzeichnis des aktuellen Skript ausgeführt wird, wenn es durch einen Symlink (häufig, wenn Skripte durch homebrew zum Beispiel die Installation) ausgeführt wurde, dann müssen Sie den Symlink analysieren und folgen:
if [[ "$OSTYPE" == *darwin* ]]; then
READLINK_CMD='greadlink'
else
READLINK_CMD='readlink'
fi
dot="$(cd "$(dirname "$([ -L "$0" ] && $READLINK_CMD -f "$0" || echo "$0")")"; pwd)"
Komplexere und mehr Anforderungen für die Arbeit (z mit einem Gnu kompatiblen Readlink installiert), so tendiere ich dazu, es nicht so oft zu verwenden. Nur wenn ich sicher bin, dass ich es brauche, wie zum Beispiel einen Befehl über Homebrew zu installieren.
Was ist Ihre Shell? Einige Shells behalten eine '$ PWD'-Variable, so dass Sie nicht nach' pwd' rufen müssen. –