Você pode desativar o "exit on error" com set +e
ou set +o errexit
ou executar o comando em um condicional para que a saída de erro não se aplique. Mais simples seria:
somecmd ... || true
Mas isso destruiria o valor de retorno, e você provavelmente precisará dele, pois kill -0
não faz muito além de configurá-lo. Então, talvez algo assim:
if kill -0 "$pid" 2>/dev/null ; then
echo it lives
fi
Quanto ao "porquê", acho que o CentOS 6 executa o Upstart, e pelo menos alguma documentação do Ubuntu parece indicar que o Upstart executa scripts com set -e
ativado.