A instrução return retornará um erro se a instrução não for executada a partir de uma função.
Nas funções do shell, use return . Em scripts, use exit .
Um script curto como
#!/bin/bash
return 0
produzirá a mensagem de erro
line 1: return: can only 'return' from a function or sourced script
e definirá $? para 1.
Se você não sair do script com um exit explícito (ou se sair com exit , mas sem especificar um código de saída), o código de retorno do script como um todo será igual ao último comando executado.
Ter exit "$?" é o mesmo que exit , e se estiver no final do script, isso pode ser deixado de fora completamente.
Em geral, sugiro também que você use $HOME em vez de til em scripts. Isso ocorre porque $HOME funciona como qualquer outra variável, enquanto o til é expandido em uma etapa de expansão separada, o que significa que ele não se comporta como uma variável e não é expandido em strings entre aspas. $HOME também é mais descritivo e, como é um script, você pode gastar alguns toques de tecla extras para tornar o código mais legível.