如何欺骗程序,让其认为没有 X 服务器正在运行

如何欺骗程序,让其认为没有 X 服务器正在运行

我有这个程序,可以使用文本用户界面和图形用户界面运行。

它缺乏任何命令行开关来强制其中之一,相反,我猜它会以某种方式自动检测我们是否在 X 中(例如,如果我从虚拟终端运行它,它会进入文本模式,如果我从X 终端模拟器,它会打开一个单独的图形窗口)。

我想强制它进入文本模式并让它在 X 终端内运行。我该怎么做呢?

答案1

通常只是

unset DISPLAY

在终端的命令行中。有些应用程序比这更聪明,并且实际上检查控制台与伪终端的权限和类型。

答案2

如果你想禁用单个命令的 X,你可以写

DISPLAY= ./my_command

请注意 后面的战略性空白=。更一般地,您可以通过在命令前面添加一系列由<variable>=<value>空格分隔的前缀来设置进程的环境变量。由于空格充当分隔符,因此=紧跟其后的空格会清除前面的变量。我们可以通过使用子 shell 作为命令,然后打印其环境来查看这些前缀的效果。举个例子:

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

这将打印

a b d

这表明子shell的环境确实与预期的不同。请注意,shell 替换发生在将各个参数传递给 之前echo。这意味着将使用三个参数进行调用,因此输出中和echo之间只有一个空格,就像命令行一样(即使在它之前有两个空格仅打印单个空格),但与(打印两个空格)不同和之间有空格)。bdecho a b ddecho a b "" dbd

相关内容