Manual de referência do Bash diz
O status de saída de uma definição de função é zero, a menos que um erro de sintaxe ocorra ou uma função readonly com o mesmo nome já exista. Quando executado, o status de saída de uma função é o status de saída do último comando executado no corpo.
O erro de sintaxe pode terminar a execução do script antes do comando complete -F
, portanto o comando após a declaração da função pode não ser executado de qualquer maneira, mas se uma função readonly com o mesmo nome for declarada antes de obter o arquivo contendo a função, terminar a execução. Para evitar que uma função errada de conclusão do bash seja chamada, um teste AND tão lógico é usado.