Eu sugeriria que seu head seja linkado por link simbólico para busybox , mas até o busybox funcionará com head -n 5 < foo.sh . (Na verdade, o que eu tentei funciona com head -n 5 foo.sh , mas talvez existam versões que não funcionam.) Ainda assim, parece provável que o head em sua máquina não seja nenhum padrão head . Talvez seja um alias ou uma função de shell.
Nota pequena: É importante (embora nem sempre óbvio) distinguir entre um programa que está "pendurado" e um programa que está simplesmente aguardando a entrada do usuário. O seu está aguardando a entrada do usuário. Isso é diferente, por exemplo, de sleep 3600 ou for ((i=1;i<100000000;++i)); do :; done .
Aqui estão algumas coisas que você pode tentar:
$ type head
head is aliased to 'echo Surprise\!'
#...
$ type head
head is a function
head ()
{
echo surprise\!
}
# ...
$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: POSIX shell script, ASCII text executable
$ type head
head is hashed (/usr/local/bin/head)
$ file /usr/local/bin/head
/usr/local/bin/head: symbolic link to '/bin/busybox'