$0
é o nome do processo em execução.
Portanto, quando você chamar o script com ./script.sh
, o processo que será executado será /bin/bash ./script.sh
, então $0
retornará ./script.sh
, então chame o script com caminho relativo em vez de seu caminho absoluto, mas , quando você colocar o script no diretório que PATH
olha dentro, a chamada será com o caminho absoluto e o retorno de $0
será /usr/bin/script.sh
porque o processo é /bin/bash /usr/bin/script.sh