Reputation: 360
I am looking for a simple solution to retrieve the absolute path of the current script. It needs to be platform independent (I want it to work on linux, freebsd, macos and without bash).
EDIT : Solution for retrieve the path of the repository of the script :
DIR="$( cd "$( dirname "$0" )" && pwd )" (source : Getting the source directory of a Bash script from within )
Upvotes: 6
Views: 1626
Reputation: 19263
#!/bin/sh
self=$(
self=${0}
while [ -L "${self}" ]
do
cd "${self%/*}"
self=$(readlink "${self}")
done
cd "${self%/*}"
echo "$(pwd -P)/${self##*/}"
)
echo "${self}"
It's «mostly portable». Pattern substitution and pwd -P
is POSIX, and the latter is usually a shell built-in. readlink
is pretty common but it's not in POSIX.
And I don't think there is a simpler mostly-portable way. If you really need something like that, I'd suggest you rather try to get realpath installed on all your systems.
Upvotes: 6