Quando você origina o arquivo com .
, os comandos serão executados como se você tivesse entrado neles na linha de comando. Assim, exit
sairá do seu shell atualmente em execução.
Para sair do shell do qual o script foi executado ao bifurcar, você precisa obter o ID do processo pai. Você pode tentar executar
kill ${PPID}
no script em vez de exit
para matar o shell pai (dica: tente apenas fazer o eco do pid primeiro e verificar em qual processo ele corresponde para que você não mate seu WM ou algo assim).
Se ${PPID}
não fizer isso por você, você também pode tentar enviar o pid como um parâmetro para o script, mas isso depende de como e onde é chamado.
Você disse que usou urxtvd
/ urxvtc
. Com essa combinação, esse script mata o terminal do qual foi iniciado:
#!/bin/sh
echo kill in 3
sleep 3
kill -1 ${PPID}
para que você possa usar kill -1
dessa maneira para matar uma única urxvtc
instância.
Observe que, se você executar isso por meio de sourcing, a instância urxvtd
será $PPID
para o terminal em execução no momento e os terminais all morrerão. Você não quer isso.