Você está certo; pkill não está gerando a mensagem, bash é. Você sugere que
$ ./test1.sh 2> /dev/null
é uma solução possível. Como o UVV aponta, a ação equivalente de dentro do script é
exec 2> /dev/null
Isso redireciona o stderr para o script para /dev/null
desta declaração até que ela seja alterada novamente.
Maneiras desajeitadas de alterá-lo incluem
exec 2> /dev/tty
que redireciona o stderr para o terminal. Isso é provavelmente (mas não necessariamente) onde foi originalmente.
Ou
exec 2>&1
que define stderr para ser o mesmo que stdout, e é provável que esteja errado.
Uma maneira mais confiável é
exec 3>&2 exec 2> /dev/null (do stuff where you don't want to see the stderr.) exec 2>&3
que salva o stderr original no descritor de arquivo 3 e depois o restaura.
Outras formas de suprimir apenas o anúncio da morte do processo incluem
(sleep 10 & pkill sleep) 2> /dev/null
e
{ sleep 10 & pkill sleep;} 2> /dev/null
que mudam o stderr apenas para os comandos agrupados.