用 [ -z $DISPLAY ] 测试 $DISPLAY 的目的是什么?

sha*_*ant 4 shell-script environment-variables test

在脚本的最开始是:

if [ -z $DISPLAY ]
then
  DIALOG=dialog
else
  DIALOG=Xdialog
fi
Run Code Online (Sandbox Code Playgroud)

我明白那个

  • $DISPLAY 持有附加到哪个伪终端的值
  • [ -z $DISPLAY ] 测试 $DISPLAY 是否有值或者是空字符串

$DISPLAY保持一个值的目的是什么,当它有一个空字符串时有什么不同?为什么知道[ -z $DISPLAY ]是 true 还是 false对脚本的进一步执行至关重要?

Kus*_*nda 6

无论这个脚本是什么,它都使用该$DISPLAY值来确定它是否在 X11 环境中运行(如果脚本在例如桌面环境中运行,$DISPLAY则将被设置)。它根本不关心实际值。

  • 如果是在X11中运行,则设置DIALOGXdialog,大概是一个用于显示对话框的X11程序。

  • 如果它不是在 X11 中运行(例如,它在无头机器上或在 SSH 会话中),它会设置DIALOGdialog,这大概是一个用于显示对话框的 curses(或至少基于文本)程序。

稍后,脚本可用于$DIALOG显示适合用户的对话框。