Julien DAUPHANT
Julien DAUPHANT

Reputation: 360

How can I simply retrieve the absolute path of the current script (multi OS solution)?

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

Answers (2)

Michał Górny
Michał Górny

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

Stephane Chazelas
Stephane Chazelas

Reputation: 6239

For zsh scripts, FWIW:

#! /bin/zsh -
fullpath=$0:A

Upvotes: 1

Related Questions