Я новичок в сценариях оболочки. Я не понимаю, что такое $DISPLAY
переменная среды.
У меня Ubuntu 13.10 и я использую /bin/bash
shell. У меня есть два монитора.
Вопросов:
Команда
echo $DISPLAY
напечатает:0.0
на моей машине (на обоих мониторах). Что это значит?В каких случаях
$DISPLAY
переменная будет пустой или NULL?Есть ли какие-либо статьи или учебники по этому вопросу?
xorg
environment-variables
Чандрайя Г.К.
источник
источник
echo $DISPLAY
печатается:0
НЕ:0.0
Ответы:
Волшебное слово в системе X Window - DISPLAY. Дисплей состоит (упрощенно) из:
Дисплей управляется серверной программой, известной как X-сервер. Сервер предоставляет возможности отображения другим программам, которые к нему подключаются.
Удаленный сервер знает, где он должен перенаправить трафик X-сети с помощью определения переменной среды DISPLAY, которая обычно указывает на сервер X Display, расположенный на вашем локальном компьютере.
Значение переменной среды отображения:
где:
hostname - это имя компьютера, на котором работает X-сервер. Опущенное имя хоста означает localhost.
D - порядковый номер (обычно 0). Его можно изменить, если к одному компьютеру подключено несколько дисплеев.
S - номер экрана. Дисплей может иметь несколько экранов. Обычно есть только один экран, хотя по умолчанию 0.
Пример значений
hostname:D.S
означает экран S на дисплее D имени хоста; X-сервер для этого дисплея прослушивает TCP-порт 6000 + D.host/unix:D.S
означает экран S на дисплее D хоста хоста; X-сервер для этого дисплея прослушивает сокет домена UNIX /tmp/.X11-unix/XD (поэтому он доступен только с хоста).:D.S
эквивалентно host / unix: DS, где host - локальное имя хоста.: 0.0 означает, что мы говорим о первом экране, прикрепленном к вашему первому дисплею на вашем локальном хосте
Читайте больше здесь и здесь и здесь .
Со страницы руководства X (7):
источник
/dev/tty1
), я получаю пустое место$DISPLAY
.:0
для$DISPLAY
.Существующие ответы не соответствуют более широкой картине.
Если вы не используете графическое окружение (то есть вы входите в системную консоль без окон и т. Д .; вы входите удаленно с текстового терминала через SSH или аналогичный, например, с компьютера под управлением Windows, на котором установлен PuTTY), тогда GUI не задействован и
DISPLAY
обычно не устанавливается. Единственным средством связи с компьютером является командная строка (хотя могут быть способы перехода в сеанс графического интерфейса, если вы знаете, как).Если вы входите в систему через консоль с графическим интерфейсом (в Ubuntu обычно используется GDM-приветствие) или с помощью графического терминала (например, с компьютера под управлением Windows, на котором работает eXceed или mobaX, или с помощью программного обеспечения для удаленного рабочего стола, такого как клиент VNC),
DISPLAY
переменная устанавливается программой, которая управляет вашим графическим сеансом, чтобы указать графическим клиентам, к каким устройствам ввода / вывода подключаться.Традиционно графический интерфейс на компьютере с Ubuntu работал под управлением X.org, реализации X11, хотя совсем недавно Canonical представила модернизированную замену под названием Mir; и даже совсем недавно, я полагаю, Мир будет заброшен в пользу другого проекта с широко схожими целями под названием Wayland . Эти замены призваны уменьшить сложность полного стека X11, о котором мы не будем здесь говорить - они придерживаются того же
DISPLAY
соглашения, которое, в конце концов, и обсуждается здесь.На X11 хост-часть
DISPLAY
может быть удаленным сервером, и вы будете использовать свой компьютер Ubuntu в качестве «графического терминала» для доступа к файлам и программам на этом удаленном сервере (в этом случае ваш компьютер является «сервером», который служит клавиатурой мыши и одного или нескольких устройств отображения для «клиентских» программ, запущенных на удаленном ... сервере). Чаще всего на вашем компьютере работают сервер X11 (или Mir, или Wayland) и клиентские программы (менеджер рабочего стола и различные графические клиенты, такие как веб-браузер, почтовый клиент, программа-календарь и т. Д.). На это указывает «серверная» частьDISPLAY
значения, которая в последнем случае обычно пуста (что подразумевает значение по умолчаниюlocalhost
).Сервер X11 может запустить один или несколько графических сеансов - например, ваш логин консоли и удаленный сеанс VNC могут выполняться одновременно. В этом случае (если ими управляет один и тот же экземпляр сервера X11) у вас есть несколько «отображений» в терминах X11. На практике один сеанс (одно событие входа в систему и экземпляр рабочего стола, порожденный этим) - это один дисплей в X11.
Один такой дисплей может иметь один или несколько экранов. Традиционно это означало один монитор, хотя в оригинальной архитектуре были некоторые прискорбные черты, такие как невозможность перемещения окна с одного экрана на другой. Надстройки, такие как Xinerama и Xrandr, еще больше запутали ситуацию до такой степени, что один экран часто соединяет несколько мониторов различными способами.
Если вы играли с системами с несколькими мониторами, вы, вероятно, обнаружили, что вы можете расположить мониторы различными способами и получить прямоугольную область, где ваши мониторы отображают некоторые ее части, а другие части не назначаются никаким мониторам. Это «экран», который создает X11, и если у вас более одной видеокарты, у вас может быть несколько таких экранов, каждый из которых назначен одному или нескольким мониторам (или теоретически работает без монитора; Xvfb использует это для разрешения чтобы запустить X11 без каких-либо мониторов, просто сопоставьте графический интерфейс с областью памяти для любых целей).
источник
С https://help.ubuntu.com/community/EnvironmentVariables :
Переменная-DISPLAY
Пример значений:
Для чего это?
источник
: 0.0 означает номер дисплея 0 и номер экрана 0
В случае ошибки в вашем $ DISPLAY, и это обычно не происходит
Некоторые учебные пособия и ресурсы можно найти здесь:
источник