Почему kill не работает из сценария, но работает с терминалом?

У меня есть следующий надуманный сценарий, чтобы проиллюстрировать мою проблему:

#!/bin/bash set -eux sudo sleep 120 & spid=$! sleep 1 sudo kill $spid wait $! 

Это напечатает

 $ ./test.sh + spid=21931 + sleep 1 + sudo sleep 120 + sudo kill 21931 + wait 21931 

а затем «подождите», пока «сон 120» не истечет. Однако, когда я запускаю sudo kill 21931 из другого терминала, процесс сна сразу же убивается. Я ожидал, что строка «sudo kill $ spid» в скрипте также немедленно уничтожит процесс сна. Почему это не работает и как я могу это сделать?

(Может быть актуальным: я вижу это поведение bash 4.3.42 и тире 0.5.7 на Ubuntu 15.10.)

Linux и Unix - лучшая ОС в мире.