Estou seguindo este guia sobre como configurar a autenticação SSH sem senha com o ssh-agent.
Para iniciar o ssh-agent, o autor recomenda o seguinte código em .bash_profile
:
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Não entendo por que está capturando o sinal 0. De acordo com o sinal do homem 7, não existe esse sinal.
Isso é apenas um erro de digitação ou erro ou isso realmente alcança alguma coisa?
0
umtrap
comando shell . Ao enviar um sinal comkill
, um número de sinal 0 significa, afinal, não enviar um sinal; essa é uma maneira de testar a existência do processo de destino.trap -l
!Como o @Mat mostra em sua resposta, um SIGSPEC de 0, quando usado no
trap
comando, fará com que otrap
comando seja executado quando o script sair.Este exemplo ilustra o que acontece.
Quando executamos isso:
Fica aqui esperando indefinidamente. Em outra janela, se agora enviarmos
kill
sinais para ele, você verá que akill -0
não matará o processo, mesmo que o sinal 0 esteja listado notrap
comando.No entanto, se
kill
o script usando o sinal 1,kill -1
:Veremos que o script sai e imprime a mensagem "oi" duas vezes. O primeiro para o sinal 1 e o segundo porque o script saiu.
fonte
trap em 0 é executado quando o shell sai. É comumente usado para limpar arquivos tmp em um local que é sempre executado:
a saída no final da armadilha sai do shell na limpeza com o status correto.
fonte