pstree recupera o nome do processo de /proc/<pid>/stat . Isso é o que foi dado ao kernel via execve(2) primeiro parâmetro; veja proc(5) e O que exatamente acontece quando eu executo um arquivo no meu shell? para detalhes. Você verá a partir do último que o kernel pode executar scripts shell diretamente (e muitos outros "binários" - veja Como o Mono é mágico? ), mas o shell também intervém em alguns casos.
Assim, se você executar
./sleepy.sh
com uma linha shebang no início do script, você verá a saída sleepy.sh in pstree porque é isso que o shell pede que o kernel execute. Se ao invés disso você executar
sh ./sleepy.sh
você verá a saída sh in pstree .
ps -f ou ps u (e pstree -a ) leem /proc/<pid>/cmdline para recuperar a linha de comando , que é diferente - é o parâmetro argv dado à execve chamada do sistema. Ao executar um script de shell com um shebang, isso é alterado para incluir o shebang, que é, sem dúvida, porque no seu caso ps mostra
/bin/bash ./sleepy.sh
(veja Como os programas são executados para muito mais sobre isso).