Existem várias falhas no seu script:
exec "$(dirname "$0")/suman-shell";
exit $?;
-
O primeiro é o ponto e vírgula final que é redundante. Eles são inofensivos, mas não servem para nada. Um fim de linha já é um separador, os ponto-e-vírgulas são usados como um separador entre vários comandos em uma única linha. A presença deles aqui está um pouco piorando a legibilidade do código.
-
O segundo é
exit
, por padrão, retorna o status de saída do comando anterior, portanto, declarar$?
é redundante, embora esteja sinalizando a intenção. -
O terceiro é
exec
nunca retorna em circunstâncias normais 1 , então a chamadaexit
não é alcançada em primeiro lugar e também é redundante.
1 Os únicos casos em que exec
retorna é um argumento vazio, um redirecionamento quebrado ou o conjunto de opções execfail
bash (que não é a configuração padrão). O primeiro e o segundo não se aplicam aqui, e não há provas que o terceiro faça.