Para verificar se dois arquivos são iguais, você precisa verificar o número do índice (inode), que é exibido com:
stat -L -c %i FilePath
Então o seu cheque agora se torna:
if [ $(stat -L -c %i "/usr/bin/app.sh") == $(stat -L -c %i "$0") ] ...
Isso funciona independentemente de quaisquer links no caminho do diretório, ou até mesmo um link simbólico ou físico para o arquivo em si.
Para ser estritamente preciso (graças a @ilkkachu por apontar isto), há uma chance improvável de que dois arquivos diferentes com o mesmo nome possam ter o mesmo inode em dois sistemas de arquivos diferentes. Para evitar isso, inclua o número do dispositivo na comparação:
if [ $(stat -L -c %d:%i "/usr/bin/app.sh") == $(stat -L -c %d:%i "$0") ] ...