On 2024-06-03 07:17, Mark J. Reed wrote: > The *exec* builtin replaces the running shell with whatever program > you run.  The point is to avoid clogging the process table with shells > that are just hanging out waiting to do nothing but exit as soon as > their child process finishes. I get that. > > In your case, the script exists to set things up in the environment > and then run xfce4-session; there's nothing for it to do after > xfce4-session completes, so it uses *exec* to tidy up. Sure.  But then what? I understand that if a script or function has nothing more to do, it may as well pre-kill itself. But the difference is that 'exec' kills the entire terminal, it doesn't just return to the prompt in a more efficient way -- which would be easy to understand, as above.  exec seems to pull the rug out from under itself, not just end a script more efficiently.  In my case, from what I've heard control seems to pass to dbus.  Mind, if dbus called the script then that's what one might expect.