In case of && , the second process waits for the first process to finish with error code 0, before it starts.
In case of &, the second process starts without waiting for the first to finish. Meaning, by the time you are looking at the GUI, the exit command has already been executed.
Right. Yeah I didn't engage my brain on the & initially as i thought it was just a typo. But that should work, seems others on the internet think the same.
I like 'exec startx', but really if someone has physical access, unless you are doing a lot of other security, you can't be safe.
I tend to be lucky in that regard, as people around me who might get physical access, tend to not have Linux know-how, even if they think of pranking me.
Hah that's what I always had on Debian on my laptop back in the version 9 days (buster?). Nothing's stopping you from doing it now with runlevels. I think with systemd it's just systemctl set-default multiuser.target
You can then always get the full boot with systemctl isolate graphical.target
Might not be the exact command but it's something like that for sure.
The default systemd target to boot into can be overriden from the kernel command line.
If the GUI ever gets broken, having a such fallback boot entry just for the (VT) console mode is invaluable. (The boot-entry can reuse the same kernel and initrd images from the regular boot.)