我有这个程序,可以使用文本用户界面和图形用户界面运行。
它缺乏任何命令行开关来强制其中之一,相反,我猜它会以某种方式自动检测我们是否在 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
之间只有一个空格,就像命令行一样(即使在它之前有两个空格仅打印单个空格),但与(打印两个空格)不同和之间有空格)。b
d
echo a b d
d
echo a b "" d
b
d