Whenever I like to write a bash script (by bash, I mean Bourne Shell), I like to ensure that whatever script I’m writing is as portable as possible. One thing that I find quite useful is basing all my paths on the currently executing file’s directory.

However, there’s no single command to get the currently executing script’s directory.

But there is a way to get this directory, but it involves a little bit of trickery. I’ve shown how to do this below:

# Set the current directory to be the dirname of the current file.
HERE=`dirname "$0"`

# If not absolute path to file, then get as absolute.
if [ `echo "${HERE}" | /usr/bin/cut -b 1 -` != "/" ] ; then
	HERE=`dirname $(pwd)/"${0}"`
fi

Hope this is useful for you as it is for me!