Ok, eu entendi. O comando basename na terceira linha inicia não a ferramenta linux basename, mas inicia este script recursivamente. Então, nomear scripts como os padrões dos programas linux não é bom. Para fazer o script funcionar com o nome "basename", é necessário usar um nome de caminho completo para o nome de base.
PROGNAME=$(/usr/bin/basename $0)