Как предполагает Марко:
BASEDIR=$(dirname $0)
echo $BASEDIR
Это работает, если вы не выполните скрипт из той же директории, где находится скрипт, в этом случае вы получите значение '.'
Чтобы обойти эту проблему, используйте:
current_dir=$(pwd)
script_dir=$(dirname $0)
if [ $script_dir = '.' ]
then
script_dir="$current_dir"
fi
Теперь вы можете использовать переменную current_dir по всему сценарию, чтобы ссылаться на каталог сценария. Однако это может все еще иметь проблему символической ссылки.