Como Tarabyte alude, isso tem que lidar com a expansão de parâmetros.
$ 0 é o nome e o caminho com o qual este script foi executado. Por exemplo, se você chamar /usr/bin/example.sh, $ 0 será "/usr/bin/example.sh". Se o seu diretório de trabalho atual for / usr e você chamar o mesmo script com ./bin/example.sh, $ 0 será "./bin/example.sh".
Quanto ao "#", isso significa expandir $ 0 após remover o prefixo especificado anteriormente. Nesse caso, o prefixo especificado anteriormente é o * / glob. Um único "#" não é ganancioso, então após ele corresponder ao primeiro * / glob, ele será interrompido. Por isso, irá remover o primeiro "/" e tudo antes dele. Dois "#" significam remover avidamente todos os arquivos * /. Então, ele irá remover todos os "/" e tudo que vem antes deles.
Editar Resumo: $ {0 ## * /} é equivalente a $ (basename $ 0), mas sem o bifurcação extra