DISPLAY环境变量的作用
原文连接:http://www.cublog.cn/u/7667/showart.php?id=141782

在Linux/Unix 类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0.0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:

DISPLAY=:0.0

使用xdpyinfo可以查看到当前显示的更详细的信息。

DISPLAY 环境变量格式如下host:NumA.NumB, host指Xserver所在的主机主机名或者ip地址, 图形将显示在这一机器上, 可以是启动了图形界面的Linux/Unix机器, 也可以是安装了Exceed, X-Deep/32等Windows平台运行的Xserver的Windows机器. 如果Host为空, 则表示Xserver运行于本机, 并且图形程序(Xclient)使用unix socket方式连接到Xserver, 而不是TCP方式. 使用TCP方式连接时, NumA为连接的端口减去6000的值, 如果NumA为0, 则表示连接到6000端口; 使用unix socket方式连接时则表示连接的unix socket的路径, 如果为0, 则表示连接到/tmp/.X11-unix/X0 . NumB则几乎总是0.

如果使用su username或者su - username切换到别的用户, 并且使用命令

export DISPLAY=:0.0

设置DISPLAY环境变量, 运行图形程序(如xclock)时会收到如下错误:

Xlib: connection to ":0.0" refused by serverXlib: No protocol specifiedError: Can't open display: :0.0

这是因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令:

xhost +

这个命令将允许别的用户启动的图形程序将图形显示在当前屏幕上。

在2台Linux机器之间, 如果设置服务器端配置文件/etc/ssh/sshd_config中包含

X11Forwarding no

客户端配置文件/etc/ssh/ssh_config包含

ForwardX11 yes

则从客户端ssh到服务器端后会自动设置DISPLAY环境变量, 允许在服务器端执行的图形程序将图形显示在客户端上. 在服务器上查看环境变量显示如下(这个结果不同的时候并不相同):

DISPLAY=localhost:10.0

在客户机上用netstat -lnp可以看到有程序监听了6010端口

tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN     4827/1

如果希望允许远程机器上的图形程序将图形显示在本地机器的Xserver上, 除了要设置远端机器的DISPLAY环境变量以外, 还需要设置本地机器的Xserver监听相应的TCP端口. 而现在的Linux系统出于安全的考虑, 默认情况下不再监听TCP端口. 可通过修改/etc/X11/xinit/xserverrc文件, 将

exec /usr/bin/X11/X -dpi 100 -nolisten tcp

修改为

exec /usr/bin/X11/X -dpi 100

允许在直接使用startx启动图形时启动对TCP端口的监听。

修改/etc/kde3/kdm/kdmrc, 将

ServerArgsLocal=-nolisten tcp

修改为

ServerArgsLocal=

允许kdm作为显示管理器时, 启动会话时监听相应的TCP端口。

修改/etc/gdm/gdm.conf, 在[Security]一节增加

DisallowTCP=false

或者在登陆窗口选择"Options" -> "Configure Login Manager..."的Security页面, 取消"Deny TCP connections to Xserver", 允许gdm作为显示管理器时, 启动会话时监听相应的TCP端口。

转载于:https://blog.51cto.com/wdllife/1641855

DISPLAY环境变量的作用相关推荐

  1. 因xhost命令和DISPLAY环境变量操作不当导致无法启动Oracle图形化安装界面

    在redhat操作系统上安装Oracle 11.1时,遇到在执行runInstaller后无法启动安装图像化界面,甚是郁闷. 问题现象: 使用Xmanager2.0软件登陆AIX桌面,root用户可以 ...

  2. php 环境变量有什么用,什么是环境变量,Linux环境变量及作用

    变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值.在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME).邮件存放 ...

  3. 环境变量的作用及设置方法

    Python小白一枚,记录自己的点点滴滴. 在学习中总是听到别人说什么全局变量,环境变量,局部变量之类的吧啦吧啦,听的一头雾水,自己百度了也是似懂非懂,这次详细的学习了一下,记录下来. 为什么要用环境 ...

  4. Java配置环境变量教程,Java配置环境变量的作用

    配置Java环境变量的作用 1:可以在cmd窗口(dos命令)运行和编译Java代码, 2:在任何路径下都能运行jdk,不配置环境变量的话,只能在jdk的安装路径下运行,换到其他路径的 话系统会提示找 ...

  5. 环境变量的作用,为什么要要设置环境变量PATH

    在windows环境里面开发项目,使用phpstudy集成环境开发,发现我执行composer  laravel-wechat的命令行的时候,一直提醒我的php版本是5.6,可是我的phpstudy明 ...

  6. c语言环境变量的作用,C语言程序的环境变量

    环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path ...

  7. Windows配置环境变量的作用和方法

    Windows配置环境变量的作用和方法 一.什么是环境变量 二.为什么要配置环境变量 三.JDK的下载和安装 四.如何配置Java环境变量 Win7如何设置环境变量 Win10如何设置环境变量 一.什 ...

  8. 配置php环境变量及其作用

    未配置PHP环境变量 一般情况下,在使用php时,不需要配置环境变量,只要在PHP.ini指定扩展的组件dll的ext路径和include环境路径即可,但cmd命令行在其他目录下运行php会报错. 配 ...

  9. 配置JAVA_HOME环境变量的作用是什么?

    文章目录 配置JAVA_HOME环境变量的作用是什么? 1.前言 2.探索 2.1使环境变量中配置的jdk版本与IDEA中的jdk版本不同 2.2删除JAVA_HOME环境变量 3.解决 3.1如何指 ...

最新文章

  1. PTA 基础编程题目集 7-17 爬动的蠕虫 C语言
  2. extjs window显示在顶层
  3. 千位亿万富豪调研:六成富豪担心继承人婚姻问题致财富外流
  4. 跟韦老师聊了一个深夜
  5. Hadoop简介与分布式安装
  6. python 3.6.5安装教程_Ubuntu16.04安装python3.6.5详细步骤
  7. 解析HttpURLConnection与代理服务器
  8. 深入理解redis复制原理
  9. kafka partition分配_【kafka】消费者对应的分配partition分区策略
  10. Android手游lua脚本的加密与解密
  11. Xshell7安装教程
  12. 韩立刚计算机网络——第五章:应用层
  13. 《现代密码学》学习笔记——第七章 密钥管理[一]
  14. sklearn.neighbors常用API介绍
  15. PLSQL Developer新手使用教程(图文教程)(转载)
  16. 来免费领养blog绿豆蛙宠物吧,和QQ宠物差不多
  17. to tell 和to ask的用法
  18. matlab实例静电场,浅析Matlab模拟静电场三维图与恒定电流场模拟静电场
  19. 股票类网站php,php 股票信息查询类
  20. LocalOS 0.1.1 版发布(内附本程序源码及Java版网游找CALL示例源码)

热门文章

  1. mount /mnt/cdrom 提示错误信息“mount: can't find /mnt/cdrom in /etc/fstab or /etc/mtab”
  2. Linux 系统故障分析与排查
  3. 怎样配置VNC服务器使其能在红帽企业Linux3系统引导时自动启动?
  4. [Vue.js进阶]从源码角度剖析vue-router(三)
  5. 看完这些细分领域别说小程序代理创业没有机会
  6. Rethinking the inception architecture for computer vision的 paper 相关知识
  7. 创业公司如何做数据分析(一)开篇
  8. $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
  9. 玩转X-CTR100 l STM32F4 l DAC数字模拟转换
  10. 理论经典:TCP协议的3次握手与4次挥手过程详解