O problema é que quando o script é invocado por um symlink,
$0
está definido para o link simbólico e não para o script original.
Você pode fazer isso:
SCRNAME=$(readlink "$0" || echo $0)
SCRNAME=${SCRNAME##*/}
O readlink
imprimirá o destino do link se a origem for um link.