Este deve ser o mesmo erro em um shell de login do usuário, porque em um shell de login o parâmetro 0 shell, expandindo para o nome do processo atual, fornece -bash , o sinal de menos indicando o shell de login. Agora você vê de onde vem o erro -b .
Tente
echo "$( dirname "$(readlink -f -- "$0")" )"