Essas não são expressões regulares, elas são exemplos da expansão de parâmetros do Bash: a substituição de uma variável ou um parâmetro especial por seu valor. O Wiki do Wooledge tem uma boa explicação .
Basicamente, no exemplo que você tem, ${0##*/} é traduzido como:
for the variable $0, and the pattern '/', the two hashes mean from the beginning of the parameter, delete the longest (or greedy) match—up to and including the pattern.
Então, onde $0 é o nome de um arquivo, por exemplo, $HOME/documents/doc.txt , o parâmetro seria expandido como: doc.txt
Da mesma forma, para ${0%/*} , o padrão / é comparado com o fim do parâmetro (o % ), com a correspondência mais curta ou não desejada excluída - que no exemplo acima lhe daria $HOME/documents .
Veja também o artigo sobre o Wiki do Bash Hacker .