Die .xinit ist ein ganz normales Shellskript und das ist beendet, wenn der letzte Befehl beendet ist. Ist xinit beendet, beendet sich auch der X-Server, bzw. die von Xinit gestarteten Programme bekommen ein SIGHUB und beenden sich in der Regel selbst.
exec dbus-launch ck-launch-session startxfce4 & sleep 5 & autostart
Die Zeile hat meiner Meinung nach ohnehin ein paar Probleme.
'exec' ist ein Syscall der den aktuellen Process durch das Kommando ersetzt. Nachdem 'exec dbus-launch...' existiert also der Shellprozess gar nicht mehr und alle nachfolgenden Kommandos werden nicht mehr durchgeführt. Aus dem Grund steht 'exec <session>' in der Regel am Ende der xinit.
Dass 'autostart' dennoch ausgeführt wird, liegt am & Operator der einen neuen Subprocess startet und damit 'exec' sinnlos macht.
Das 'sleep 5&' ist übrigens genauso sinnlos. Durch den &-Operator wird das Sleep-Kommando in einem Subprocess ausgeführt und das nachfolgende Kommando wird dann ohne 5 Sekunden zu warten, sofort ausgeführt.