Skip to content

Instantly share code, notes, and snippets.

@jasontbradshaw
Last active September 11, 2016 20:25
Show Gist options
  • Save jasontbradshaw/845666d074d191857219 to your computer and use it in GitHub Desktop.
Save jasontbradshaw/845666d074d191857219 to your computer and use it in GitHub Desktop.
A bash script that resolves its own physical path
#!/usr/bin/env bash
# Courtesy http://stackoverflow.com/a/246128.
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do
# Resolve `$SOURCE` until the file is no longer a symlink.
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
# If `$SOURCE` was a relative symlink, we need to resolve it relative to the
# path where the symlink file was located.
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
# `$DIR` is now the script's directory!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment