$ DISPLAY ortam değişkeni nedir?


74

Ben komut dosyası kabuk için yeni. $DISPLAYÇevresel değişkenin ne olduğunu anlamıyorum .

Ubuntu 13.10 var ve /bin/bashkabuk kullanıyorum. İki monitörüm var.

Sorular:

  1. Komut echo $DISPLAYmakineme yazdırılacak :0.0(her iki monitörde). Ne anlama geliyor?

  2. $DISPLAYDeğişken hangi durumlarda boş veya NULL olacaktır?

  3. Bu konuda herhangi bir makale veya öğretici var mı?


Bugün echo $DISPLAYbaskı :0:0.0
basıyor

boş veya hata durumunda bunun yardımcı olacağını kontrol edin: askubuntu.com/questions/432610/…
Maythux

Yanıtlar:


86

X pencere sistemindeki sihirli kelime DISPLAY'dir. Bir ekran şunlardan oluşur (basitleştirilmiş):

  • klavye,
  • Bir fare
  • ve bir ekran.

Bir ekran, X sunucusu olarak bilinen bir sunucu programı tarafından yönetilir. Sunucu, kendisine bağlanan diğer programlara görüntüleme yetenekleri sunar.

Uzak sunucu, X ağ trafiğini, genellikle yerel bilgisayarınızda bulunan bir X Display sunucusuna işaret eden DISPLAY ortam değişkeni tanımını kullanarak nereye yönlendirmesi gerektiğini bilir.

Görüntüleme ortamı değişkeninin değeri:

hostname:D.S

nerede:

ana bilgisayar adı, X sunucusunun çalıştığı bilgisayarın adıdır. İhmal edilen bir ana bilgisayar adı, yerel ana bilgisayar anlamına gelir.

D bir sıra numarasıdır (genellikle 0). Bir bilgisayara bağlı birden fazla ekran varsa, değişebilir.

S, ekran numarasıdır. Bir ekran aslında birden fazla ekran içerebilir. Genellikle sadece bir ekran vardır, ancak 0 varsayılandır.

Değer örneği

localhost:4
google.com:0
:0.0

hostname:D.Sana bilgisayar ana bilgisayar adının D ekranında S anlamına gelir; bu ekran için X sunucusu, 6000 + D TCP bağlantı noktasını dinliyor.

host/unix:D.Sana bilgisayar ana bilgisayarının D ekranındaki S anlamına gelir; bu ekran için X sunucusu, UNIX etki alanı soketinde /tmp/.X11-unix/XD dosyasını dinliyor (bu nedenle yalnızca ana bilgisayardan erişilebilir).

:D.S host / unix: DS ile eşdeğerdir, burada ev sahibi yerel ana bilgisayar adıdır.

: 0.0, yerel sunucunuzdaki ilk ekranınıza ekli ilk ekrandan bahsettiğimiz anlamına gelir

Buradan daha fazla ve burada ve burada okuyun .

X (7) kılavuz sayfasından:

Kullanıcı bakış açısına göre, her X sunucusunun formun görünen adı vardır:

hostname: displaynumber.screennumber

Bu bilgi uygulama tarafından sunucuya nasıl bağlanacağını ve varsayılan olarak hangi ekranı kullanması gerektiğini belirlemek için kullanılır (birden fazla monitör bulunan ekranlarda):

ana bilgisayar adı Ana bilgisayar adı, ekranın fiziksel olarak bağlı olduğu makinenin adını belirtir. Ana bilgisayar adı verilmezse, aynı makinedeki bir sunucuya iletişim kurmanın en etkili yolu kullanılır. displaynumber "Ekran" ifadesi genellikle ortak bir klavyeyi ve işaretçiyi (fare, tablet vb.) paylaşan monitör koleksiyonuna atıfta bulunmak için kullanılır. Çoğu iş istasyonunda yalnızca bir klavye ve dolayısıyla yalnızca bir ekran bulunur. Ancak daha büyük, çok kullanıcılı sistemler sıklıkla birden fazla ekrana sahiptir, böylece birden fazla kişinin aynı anda grafik çalışması yapabilmesi için. Karışıklığı önlemek için, bir makinedeki her ekrana, o ekran için X sunucusu başlatıldığında (0'dan başlayarak) bir ekran numarası atanır. Ekran numarası her zaman bir ekran adında verilmelidir. ekran numarası Bazı ekranlar iki veya daha fazla monitör arasında tek bir klavyeyi ve işaretçiyi paylaşır. Her monitörün kendine ait bir pencere seti olduğundan, o ekran için X sunucusu başlatıldığında her ekrana (0'dan başlayarak) bir ekran numarası atanır. Ekran numarası verilmezse, ekran 0 kullanılacaktır.


Bu $ DISPLAY ne zaman boş ya da BOŞ olacak.
Chandrayya GK

Normalde Ekranınızda bir sorun olmadıkça bu olmamalıdır. Ekran yöneticinizin yeniden başlatılması sorunu çözecektir. Ancak bu varsayılan bir işlem değildir.
Maythux


@ChandrayyaGK Örneğin, GNOME veya KDE gibi herhangi bir masaüstü ortamını kullanmadığımda, ancak doğrudan TTY (gibi /dev/tty1) ile oturum açtığımda, boş olanı aldım $DISPLAY.
Franklin Yu

@Maythux Bazen ekran numarası 0. Benim GNOME verir olmanın zaman ihmal gibi görünüyor :0için $DISPLAY.
Franklin Yu

10

Mevcut cevaplar daha geniş tabloya değinmiyor.

Eğer grafiksel bir ortam kullanmıyorsanız (yani sistem konsolunda penceresiz vs. hiçbir GUI dahil değildir ve DISPLAYgenellikle ayarlanmamış olacaktır. Bilgisayarla iletişim kurmanın tek yolu komut satırıdır (nasıl yapılacağını biliyorsanız bir GUI oturumuna girmenin yolları olabilir).

Konsolda grafik bir arayüzle oturum açıyorsanız (Ubuntu'da, genellikle GDM karşılayıcı kullanılır) veya grafiksel bir terminal kullanıyorsanız (örneğin, eXceed veya mobaX çalıştıran bir Windows bilgisayarından veya bir VNC istemcisi gibi uzak masaüstü yazılımından) DISPLAYdeğişken, grafik oturumunuzu yöneten program tarafından kurulup hangi G / Ç cihazlarının bağlanacağını grafiksel istemcilere gösterir.

Geleneksel olarak, bir Ubuntu bilgisayarındaki GUI, bir X11 uygulaması olan X.org kullanıyordu, ancak daha yakın bir zamanda, Canonical tarafından tanıtılan Mir adında modern bir değiştirme yapıldı; ve daha yakın zamanda, Mir'in Wayland adı verilen ve tamamen benzer hedefleri olan başka bir projenin lehine terk edileceğine inanıyorum . Bu değiştirmeler, buraya girmeyeceğimiz tam bir X11 yığınının karmaşıklığını azaltmaya yöneliktir - aynı DISPLAYsözleşmeye bağlı kalıyorlar ;

X11’de ana bilgisayar DISPLAYbir uzak sunucu olabilir ve Ubuntu bilgisayarınızı bu uzak sunucudaki dosyalara ve programlara erişmek için "grafik terminal" olarak kullanırsınız (bu durumda bilgisayarınız bir klavyeye hizmet veren "sunucu" olur) , bir fare ve bir veya daha fazla görüntüleme aygıtını uzaktan kumandada çalışan programlara "istemci" ...). Daha yaygın olarak, X11 (veya Mir veya Wayland) sunucusu ve istemci programları (bir masaüstü yöneticisi ve bir web tarayıcısı, bir e-posta istemcisi, bir takvim programı vb. Gibi çeşitli grafik istemciler) bilgisayarınızda çalışır. Bu, DISPLAYikinci durumda genellikle boş olan (varsayılan değeri ifade eden localhost) değerin "sunucu" kısmı ile gösterilir .

Bir X11 sunucusu bir veya daha fazla grafik oturumu çalıştırabilir - örneğin, konsol girişiniz ve uzak bir VNC oturumu aynı anda çalışıyor olabilir. Bu durumda (aynı X11 sunucu örneği tarafından yönetiliyorsa), X11 terimlerinde birden fazla "ekran" vardır. Uygulamada, bir oturum (bir oturum açma olayı ve bundan ortaya çıkan masaüstü örneği) X11'deki bir ekrandır.

Böyle bir ekran bir veya daha fazla ekran içerebilir. Geleneksel olarak, bu, bir monitör anlamına geliyordu, ancak orijinal mimari, bir pencereyi bir ekrandan diğerine taşıma kabiliyeti gibi talihsiz özelliklere sahipti. Xinerama ve Xrandr gibi eklentiler, durumu bir ekranın sıklıkla birden fazla monitörü çeşitli şekillerde bağladığı noktaya getirdi.

Birden fazla monitör sistemiyle oynadıysanız, muhtemelen monitörleri çeşitli şekillerde düzenleyebileceğinizi ve monitörlerin bazı bölümlerini görüntülediği ve diğer bölümlerin hiçbir monitöre atanmadığı dikdörtgen bir alana sahip olabileceğinizi keşfettiniz. Bu, X11'in oluşturduğu "ekrandır" ve birden fazla ekran kartınız varsa, her biri bir veya daha fazla monitöre (veya teoride monitörsüz olarak çalışan) atanan bu ekranlardan birden fazlasına sahip olabilirsiniz; X11'i herhangi bir monitör kullanmadan çalıştırmanız yeterli; GUI'yi herhangi bir amaç için bir hafıza bölgesi ile eşleştirin).


Mir, Birlik ile birlikte gerçekten de terk edildi. Uzun süredir gdm yerine lightdm varsayılandı, ancak belki de cevabınızın bu kısmı Birliğin yükselişinden önceki haliyle tekrar doğrulandı! MATE kullanıyorum, bu yüzden önemsizce kontrol edemiyorum ...
Zanna

Linux'u konsoldan (penceresiz) çalıştırıyordum ve bu her şeyi açıklıyor. Aslında mantıklı: p
Jean-Francois T.

3

Gönderen https://help.ubuntu.com/community/EnvironmentVariables :

Değişken - EKRAN

Değerler Örneği:

:0.0
localhost:10.0
terminal01:0.0

Ne için?

Bu değişken, asıl grafik kullanıcı arayüzünün görüntüleneceği grafiksel uygulamaları belirtmek için kullanılır, değer 3 bölümden oluşur: Bir ana bilgisayar adı, ardından iki nokta üst üste (:), ardından bir nokta (.) Ve bir ekran tarafından gösterilen bir ekran numarası numara.

Ana bilgisayar adı bölümü, grafik çıktının ağ üzerinden uzak bir makineye gönderilmesini sağlamak için kullanılabilir. Çıktı yerel makinede çalışan bir X sunucusu için yapıldığında atlanabilir. Ekran numarası aynı makinede çalışan birden fazla X sunucusu arasından seçim yapmanıza izin verir (Ubuntu, birden fazla grafik masaüstü oturumu etkinleştirmek için birden fazla X sunucusu kullanır).

Ekran numarası aynı X sunucusu tarafından yönetilen birden fazla fiziksel ekran arasından seçim yapmak için kullanılsa da, günümüzde nadiren "0" dışında bir şeye ayarlanmaktadır. "DISPLAY" ortam değişkeninin değerini manuel olarak ayarlamak bugünlerde nadiren gereklidir, çünkü gerektiğinde "GDM" ve "SSH" gibi birçok uygulama tarafından otomatik ve akıllıca ayarlanabilir.


3

echo $ DISPLAY yazacaktır: makinemde 0.0 (Her iki monitörde). Bu ne anlama geliyor?

: 0,0, ekran numarası 0 ve ekran numarası 0 anlamına gelir.

Bu durumda $ DISPLAY boş veya NULL olur?

$ DISPLAY'inizde hata olması durumunda bu normal bir şekilde olmaz

Bu konuda herhangi bir makale veya öğretici var mı?

Bazı dersler ve kaynaklar burada bulunabilir:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.