Cos'è
$XDG_VTNR
? Dove e quando viene impostato?
È impostato da pam_systemd
modulo PAM, ed è impostato solo su macchine che utilizzano systemd, il che significa che non dovresti non fai affidamento su di esso nei tuoi script, a meno che tu non voglia farli dipendere da systemd.
Sui sistemi che utilizzano systemd, $XDG_VTNR
sarà impostato sia in grafica (da lightdm
, gdm
, ecc.) e nelle sessioni in modalità testo (tramite /bin/login
).
Dove posso trovare la documentazione ufficiale su questa variabile?
Nel pam_systemd(8)
manpage.
tty
è un comando integrato mentre$XDG_VTNR
è fornito da Xorg, perché le persone scelgono di usare$XDG_VTNR
invece deltty
integrato ?
1) tty
è un programma autonomo, non integrato, e $XDG_VTNR
non è fornito da Xorg.
2) Perché sono cose completamente diverse. Come chiaramente indicato nella sua manpage, tty(1)
ti dirà il nome del terminale connesso al suo input standard, non il nome del terminale virtuale su cui potrebbe essere in esecuzione la tua sessione GUI o simili[1]. Considera questo:
$ script -q /dev/null
$ tty
/dev/pts/5
$ script -q /dev/null
$ tty
/dev/pts/6
$ tty </dev/zero
not a tty
[1] per cui XDG_VTNR
non è neanche un indicatore affidabile.