A primeira chamada iniciará uma nova instância do bash para interpretar o script, o que significa que o bash definirá $0
em seu caminho.
A segunda chamada tratará o arquivo como executável e o executará, então $0
apontará para ele.
As duas últimas chamadas carregarão o arquivo na instância atual do bash, então $0
apontará para lá.
NB: # 2 precisa que o arquivo seja executável, # 1, # 3 e # 4 não.