Какова переменная среды $DISPLAY?

Я являюсь новым для окружения сценариев. Я не понимаю что $DISPLAY переменная окружения.

У меня есть Ubuntu 13.10, и я использую /bin/bash оболочка. У меня есть два монитора.

Вопросы:

  1. Команда echo $DISPLAY распечатает :0.0 на моей машине (на обоих мониторах). Что это означает?

  2. В котором случаи будут $DISPLAY переменная быть пробелом или ПУСТЫМ УКАЗАТЕЛЕМ?

  3. Есть ли какие-либо статьи или учебные руководства на этом?

75
задан 12 January 2018 в 01:37

4 ответа

Волшебное слово в X-оконной системе является ДИСПЛЕЕМ. Дисплей состоит (упрощенный):

  • клавиатура,
  • мышь
  • и экран.

дисплеем А управляет программа сервера, известная как X-сервер. Подачи сервера, отображающие возможности к другим программам, которые соединяются с ним.

удаленный сервер знает, где он должен перенаправить X сетевых трафиков с помощью определения переменной среды ДИСПЛЕЯ, которая обычно указывает на X серверов Дисплея, расположенных на Вашем локальном компьютере.

значение переменной среды дисплея:

hostname:D.S

, где:

имя узла является названием компьютера, куда X-сервер работает. Опущенное имя узла означает localhost.

D является порядковым номером (обычно 0). Это может варьироваться, если существует несколько дисплеев, подключенных к одному компьютеру.

S является экранным числом. Дисплей может на самом деле иметь несколько экранов. Обычно существует только один экран хотя, где 0 значение по умолчанию.

Пример значений

localhost:4
google.com:0
:0.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:D.S, где хост является локальным именем узла.

:0.0 средства, что мы говорим о первом экране, подключенном к Вашему первому дисплею в Вашем локальном хосте

Read больше здесь и здесь и здесь .

От X (7) страница справочника:

С точки зрения пользователя, каждый X-сервер имеет отображаемое имя формы:

hostname:displaynumber.screennumber

Эта информация используется приложением, чтобы определить, как это должно соединиться с сервером и которые экранируют его, должен использовать по умолчанию (на дисплеях с несколькими мониторами):

имя узла имя узла определяет название машины, с которой физически подключен дисплей. Если имя узла не будет дано, самый эффективный способ связаться с сервером на той же машине будет использоваться. displaynumber, который фраза "дисплей" обычно используется для обращения к набору мониторов, которые совместно используют общую клавиатуру и указатель (мышь, планшет, и т.д.). Большинство рабочих станций имеет тенденцию только иметь одну клавиатуру, и поэтому, только один дисплей. Большие, многопользовательские системы, однако, часто имеют несколько дисплеев так, чтобы больше чем один человек мог сделать графическую работу сразу. Для предотвращения беспорядка каждому дисплею на машине присваивают номер дисплея (начинающийся в 0), когда X-сервер для того дисплея запущен. Число дисплея должно всегда даваться в отображаемом имени. screennumber Некоторые дисплеи совместно используют единственную клавиатуру и указатель среди двух или больше мониторов. Так как каждый монитор имеет свой собственный набор окон, каждому экрану присваивают экранный номер (начинающийся в 0), когда X-сервер для того дисплея запущен. Если экранное число не будет дано, экран 0 будет использоваться.

86
ответ дан 15 November 2019 в 23:56

Существующим ответам не удается обратиться к более широкому изображению.

, Если Вы не используете графическую среду (т.е. Вы входите в систему на системной консоли без окон и т.д.; или Вы входите в систему удаленно от терминала только для текста по SSH или подобные, такой как от компьютерного выполнения Windows PuTTY), затем, никакой GUI не включен, и DISPLAY будет обычно сбрасываться. Ваше единственное средство общения с компьютером является командной строкой (хотя могут быть способы вертеться в сессию GUI, если Вы знаете как).

, Если Вы входите в систему на консоли с графическим интерфейсом (на Ubuntu, обычно зазывала GDM используется) или использование графического терминала (такой как от компьютерного выполнения Windows превышают или mobaX или программное обеспечение удаленного рабочего стола как клиент VNC) DISPLAY переменная настраивается программой, которая управляет Вашей графической сессией для указания графическим клиентам который устройства ввода-вывода соединиться с.

Традиционно, GUI на компьютере Ubuntu выполнял X.org, реализацию X11, хотя позже, модернизированная замена под названием Мир была представлена Каноническим; и еще позже, я верю , от Мира откажутся в пользу другого проекта с широко подобными целями под названием Уэйленд . Эти замены предназначаются для сокращения сложности полного стека X11, в который мы не будем входить здесь - они придерживаются того же DISPLAY конвенция, которая является, в конце концов, что мы обсуждаем здесь.

На X11, часть хоста DISPLAY могла быть удаленным сервером, и Вы будете использовать свой компьютер Ubuntu в качестве "графического терминала" для доступа к файлам и программам на том удаленном сервере (в этом случае компьютер является "сервером", который служит клавиатуре, мыши и одному или нескольким дисплеям к "клиентским" программам, работающим на удаленном... сервер). Чаще всего, X11 (или Мир или Уэйленд) сервер и клиентские программы (среда рабочего стола и различные графические клиенты, такие как веб-браузер, почтовый клиент, календарная программа, и т.д.) все работают на Вашем компьютере. Это обозначается частью "сервера" эти DISPLAY значение, которое в последнем случае обычно пусто (который подразумевает значение по умолчанию, localhost).

сервер X11 может выполнить одну или несколько графических сессий - например, Ваш консольный вход в систему и удаленная сессия VNC могли работать одновременно. В этом случае (если ими управляет тот же экземпляр сервера X11) у Вас есть больше чем один "дисплей" в терминах X11. На практике одна сессия (одно событие входа в систему и настольный экземпляр, порожденный от этого), является одним дисплеем в X11.

Один такой дисплей может иметь один или несколько экранов. Традиционно, это означало один монитор, хотя исходная архитектура имела некоторые неудачные черты, такие как неспособность переместить окно от одного экрана до другого. Дополнения как Xinerama и Xrandr далее загрязнили ситуацию до такой степени, когда, один экран часто подключает несколько мониторов различными способами.

, Если Вы играли с несколькими-системами-контроля, Вы, вероятно, обнаружили, что можно расположить мониторы различными способами и закончить с прямоугольной областью, где мониторы отображают некоторые части ее, и другие части не присвоены никакому монитору. Это - "экран", который X11 создает, и если у Вас есть больше чем одна видеокарта, у Вас могут быть несколько из этих экранов, каждый присвоенный одному или нескольким мониторам (или в теории, работающей без монитора; Xvfb использует это, чтобы позволить Вам выполнять X11 без любых мониторов, просто отображая GUI на регион памяти для любой цели).

10
ответ дан 15 November 2019 в 23:56

$DISPLAY эха распечатает:0.0 на моей машине (на Обоих мониторах). Что это означает?

:0.0 дисплея средств номер 0 и экран номер 0

, В этом случае $DISPLAY будет пробелом или ПУСТЫМ УКАЗАТЕЛЕМ?

В случае ошибки в Вашем $DISPLAY и этого обычно не происходит

, там какие-либо статьи или учебные руководства на этом?

Некоторые учебные руководства и ресурс могут быть найдены здесь:

3
ответ дан 15 November 2019 в 23:56

От https://help.ubuntu.com/community/EnvironmentVariables:

Переменная - ДИСПЛЕЙ

Пример Значений:

:0.0
localhost:10.0
terminal01:0.0

, Для чего это?

Эта переменная используется для указания к графическим приложениям, где отобразить фактический графический интерфейс пользователя, значение состоит из 3 частей: имя узла сопровождается двоеточием (:), число дисплея, сопровождаемое точкой (.) и экранным числом.

часть имени узла может использоваться для отправления вывода графических данных на удаленную машину по сети. Это может быть опущено, когда вывод предназначен для X-сервера, работающего на локальной машине. Число дисплея позволяет выбирать среди нескольких X-серверов, работающих на той же машине (Ubuntu использует несколько X-серверов для включения нескольких графических настольных сессий).

, Хотя экранное число используется для выбора среди нескольких физического экрана, которыми управляет тот же X-сервер, он редко устанавливается на что-либо кроме "0" в наше время. Manually, устанавливающий значение переменной среды "ДИСПЛЕЯ", редко необходим в наше время, так как это может быть автоматически и разумно скорректировано многими приложениями, такими как "GDM" и "SSH" при необходимости.

3
ответ дан 15 November 2019 в 23:56

Другие вопросы по тегам:

Похожие вопросы: