Tout appel à un programme externe en shell est un fork.
La seule différence entre une commande lancée avec '&' et sans, c'est que dans le premier cas le shell n'attend pas le retour du processus fils.
Exemple : je lance un "sleep" de une minute en arrière-plan, avec '&'. Puis je lance un ptree sur le PID courant ("$$" == PID courant) sans '&' et, comme le montre ptree lui-même, il est au même niveau que le sleep :
$ sleep 60 &
[1] 3486
$ ptree $$
165 /usr/sbin/inetd -s
25367 in.rlogind
25369 -csh
25379 bash
3486 sleep 60
3487 ptree 25379
|