什么是环境变量 XDG_VTNR?

Wei*_*ian 8 linux xorg x11 tty

我发现的几乎每个页面都会在登录后自动启动 Xorg,无需解释,~/.bash_profile例如:

if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
  exec xinit
fi
Run Code Online (Sandbox Code Playgroud)

我想$XDG_VTNR可能是获取当前 TTY 编号的变量,但是,已经有一个名为 的命令tty,它可以满足相同的目的。

我的问题:

  1. 什么是$XDG_VTNR?何时何地设置?
  2. 我在哪里可以找到关于这个变量的官方文档?
  3. tty是内置命令,而$XDG_VTNR由 Xorg 提供,为什么人们选择使用$XDG_VTNR而不是内置命令tty

mos*_*svy 10

什么是$XDG_VTNR?何时何地设置?

这是一套由pam_systemdPAM模块,并且只设置在机器上被使用systemd,这意味着你应该不会,除非你想使他们依赖于systemd依赖于它在脚本中。

在其上使用systemd系统,$XDG_VTNR将在图形(由被设置二者lightdmgdm等),并在文本模式会话(通过/bin/login)。

我在哪里可以找到关于这个变量的官方文档?

pam_systemd(8)联机帮助页中。

tty是内置命令,而$XDG_VTNR由 Xorg 提供,为什么人们选择使用$XDG_VTNR而不是内置命令tty

1)tty是一个独立的程序,不是内置的,$XDG_VTNR不是由 Xorg 提供的。

2)因为它们是完全不同的东西。正如其联机帮助页中明确指出的那样,tty(1)将告诉您连接到其标准输入的终端的名称,而不是您的 GUI 会话或可能正在运行的虚拟终端的名称 [1]。考虑一下:

$ script -q /dev/null
$ tty
/dev/pts/5
$ script -q /dev/null
$ tty
/dev/pts/6
$ tty </dev/zero
not a tty
Run Code Online (Sandbox Code Playgroud)

[1] 这XDG_VTNR也不是一个可靠的指标。