Biến môi trường $ HIỂN THỊ là gì?


75

Tôi mới sử dụng shell scripting. Tôi không hiểu $DISPLAYbiến môi trường là gì.

Tôi có Ubuntu 13.10 và tôi sử dụng /bin/bashshell. Tôi có hai màn hình.

Câu hỏi:

  1. Lệnh echo $DISPLAYsẽ in :0.0trên máy của tôi (trên cả hai màn hình). Điều đó có nghĩa là gì?

  2. Trong trường hợp nào thì $DISPLAYbiến sẽ trống hoặc NULL?

  3. Có bất kỳ bài viết hoặc hướng dẫn về điều này?


Hôm nay echo $DISPLAYlà in :0KHÔNG:0.0
Chandrayya GK

kiểm tra điều này sẽ giúp ích trong trường hợp trống hoặc có lỗi: askubfox.com/questions/432610/ trên
Maythux

Câu trả lời:


86

Từ ma thuật trong hệ thống cửa sổ X là HIỂN THỊ. Một màn hình bao gồm (đơn giản hóa):

  • bàn phím,
  • con chuột
  • và một màn hình.

Một màn hình được quản lý bởi một chương trình máy chủ, được gọi là máy chủ X. Máy chủ phục vụ khả năng hiển thị cho các chương trình khác kết nối với nó.

Máy chủ từ xa biết nơi nó phải chuyển hướng lưu lượng mạng X thông qua định nghĩa biến môi trường HIỂN THỊ thường chỉ đến máy chủ Hiển thị X nằm trên máy tính cục bộ của bạn.

Giá trị của biến môi trường hiển thị là:

hostname:D.S

Ở đâu:

tên máy chủ là tên của máy tính nơi máy chủ X chạy. Một tên máy chủ bị bỏ qua có nghĩa là localhost.

D là số thứ tự (thường là 0). Nó có thể được thay đổi nếu có nhiều màn hình được kết nối với một máy tính.

S là số màn hình. Một màn hình thực sự có thể có nhiều màn hình. Thông thường chỉ có một màn hình mặc dù 0 là mặc định.

Ví dụ về các giá trị

localhost:4
google.com:0
:0.0

hostname:D.Snghĩa là màn hình S trên màn hình D của tên máy chủ; máy chủ X cho màn hình này đang lắng nghe tại cổng TCP 6000 + D.

host/unix:D.Scó nghĩa là màn hình S trên màn hình D của máy chủ lưu trữ; máy chủ X cho màn hình này đang lắng nghe tại ổ cắm tên miền UNIX /tmp/.X11-unix/XD (vì vậy chỉ có thể truy cập từ máy chủ).

:D.S tương đương với máy chủ / unix: DS, trong đó máy chủ là tên máy chủ cục bộ.

: 0,0 có nghĩa là chúng ta đang nói về màn hình đầu tiên được gắn vào màn hình đầu tiên của bạn trong máy chủ lưu trữ cục bộ của bạn

Đọc thêm ở đâyở đâyở đây .

Từ trang người đàn ông X (7):

Từ góc nhìn của người dùng, mọi máy chủ X đều có tên hiển thị của biểu mẫu:

tên máy chủ: displaynumber.screennumber

Thông tin này được ứng dụng sử dụng để xác định cách kết nối với máy chủ và màn hình nào sẽ sử dụng theo mặc định (trên màn hình có nhiều màn hình):

tên máy chủ Tên máy chủ chỉ định tên của máy mà màn hình được kết nối vật lý. Nếu tên máy chủ không được cung cấp, cách giao tiếp hiệu quả nhất với máy chủ trên cùng một máy sẽ được sử dụng. displaynumber Cụm từ "display" thường được sử dụng để chỉ bộ sưu tập màn hình dùng chung bàn phím và con trỏ (chuột, máy tính bảng, v.v.). Hầu hết các máy trạm có xu hướng chỉ có một bàn phím và do đó, chỉ có một màn hình. Tuy nhiên, các hệ thống lớn hơn, nhiều người dùng thường có một vài màn hình để nhiều người có thể làm việc đồ họa cùng một lúc. Để tránh nhầm lẫn, mỗi màn hình trên máy được gán một số hiển thị (bắt đầu từ 0) khi máy chủ X cho màn hình đó được khởi động. Số hiển thị phải luôn được cung cấp trong một tên hiển thị. màn hình số Một số màn hình chia sẻ một bàn phím và con trỏ giữa hai hoặc nhiều màn hình. Vì mỗi màn hình có một bộ cửa sổ riêng, mỗi màn hình được gán một số màn hình (bắt đầu từ 0) khi máy chủ X cho màn hình đó được khởi động. Nếu số màn hình không được cung cấp, màn hình 0 sẽ được sử dụng.


Khi $ HIỂN THỊ này sẽ là null hoặc BLANK.
Chandrayya GK

Trong bình thường Điều này không được xảy ra trừ khi có sự cố trong màn hình của bạn .. Chủ yếu là khởi động lại trình quản lý hiển thị của bạn sẽ giải quyết vấn đề. Nhưng đây không phải là một hành động mặc định.
Maythux


@ChandrayyaGK Ví dụ: khi tôi không sử dụng bất kỳ môi trường máy tính để bàn nào như Gnome hoặc KDE, nhưng đăng nhập trực tiếp bằng TTY (như /dev/tty1), tôi đã để trống $DISPLAY.
Franklin Yu

@Maythux Đôi khi số màn hình dường như bị bỏ qua khi là 0. Gnome của tôi :0cho $DISPLAY.
Franklin Yu

10

Các câu trả lời hiện tại không giải quyết được bức tranh rộng lớn hơn.

Nếu bạn không sử dụng môi trường đồ họa (nghĩa là bạn đang đăng nhập trên bảng điều khiển hệ thống không có cửa sổ, v.v. hoặc bạn đang đăng nhập từ xa từ thiết bị đầu cuối chỉ có văn bản qua SSH hoặc tương tự, chẳng hạn như từ máy tính Windows chạy PuTTY) thì không có GUI nào liên quan và DISPLAYthường sẽ không được đặt. Phương tiện duy nhất của bạn để giao tiếp với máy tính là dòng lệnh (mặc dù có thể có nhiều cách để xoay vòng vào phiên GUI nếu bạn biết cách).

Nếu bạn đang đăng nhập trên bảng điều khiển với giao diện đồ họa (trên Ubuntu, thông thường sử dụng công cụ chào hỏi GDM) hoặc sử dụng thiết bị đầu cuối đồ họa (như từ máy tính Windows chạy eXceed hoặc mobaX hoặc phần mềm máy tính từ xa như máy khách VNC) DISPLAYbiến được thiết lập bởi chương trình quản lý phiên đồ họa của bạn để chỉ ra cho các máy khách đồ họa mà thiết bị I / O kết nối tới.

Theo truyền thống, GUI trên máy tính Ubuntu đang chạy X.org, một triển khai X11, mặc dù gần đây, một sự thay thế được hiện đại hóa có tên Mir đã được Canonical giới thiệu; và thậm chí gần đây hơn, tôi tin rằng Mir sẽ bị từ bỏ để ủng hộ một dự án khác với các mục tiêu tương tự rộng rãi được gọi là Wayland . Những sự thay thế này nhằm làm giảm sự phức tạp của một ngăn xếp X11 đầy đủ, mà chúng ta sẽ không đi vào đây - chúng tuân thủ cùng một DISPLAYquy ước, đó là sau tất cả những gì chúng ta đang thảo luận ở đây.

Trên X11, phần máy chủ của máy chủ DISPLAYcó thể là máy chủ từ xa và bạn sẽ sử dụng máy tính Ubuntu làm "thiết bị đầu cuối đồ họa" để truy cập các tệp và chương trình trên máy chủ từ xa đó (trong trường hợp đó máy tính của bạn là "máy chủ" phục vụ bàn phím , một con chuột và một hoặc nhiều thiết bị hiển thị cho các chương trình "máy khách" đang chạy trên máy chủ ... từ xa). Thông thường hơn, máy chủ X11 (hoặc Mir hoặc Wayland) và các chương trình máy khách (trình quản lý máy tính để bàn và các máy khách đồ họa khác nhau như trình duyệt web, ứng dụng email, chương trình lịch, v.v.) đều chạy trên máy tính của bạn. Điều này được biểu thị bằng phần "máy chủ" của DISPLAYgiá trị, trong trường hợp sau thường là trống (ngụ ý giá trị mặc định localhost).

Máy chủ X11 có thể chạy một hoặc nhiều phiên đồ họa - ví dụ: đăng nhập bảng điều khiển của bạn và phiên VNC từ xa có thể chạy cùng một lúc. Trong trường hợp này (nếu chúng được quản lý bởi cùng một phiên bản máy chủ X11), bạn có nhiều "hiển thị" theo thuật ngữ X11. Trong thực tế, một phiên (một sự kiện đăng nhập và phiên bản máy tính để bàn xuất hiện từ đây) là một màn hình trong X11.

Một màn hình như vậy có thể có một hoặc nhiều màn hình. Theo truyền thống, điều này có nghĩa là một màn hình, mặc dù kiến ​​trúc ban đầu có một số đặc điểm đáng tiếc như không thể di chuyển cửa sổ từ màn hình này sang màn hình khác. Các tiện ích bổ sung như Xinerama và Xrandr đã làm rối loạn thêm tình huống đến mức một màn hình thường kết nối nhiều màn hình theo nhiều cách khác nhau.

Nếu bạn đã chơi với nhiều hệ thống màn hình, có lẽ bạn đã phát hiện ra rằng bạn có thể sắp xếp màn hình theo nhiều cách khác nhau và kết thúc với một khu vực hình chữ nhật nơi màn hình của bạn hiển thị một số phần của nó và các phần khác không được gán cho bất kỳ màn hình nào. Đây là "màn hình" mà X11 tạo ra và nếu bạn có nhiều hơn một card màn hình, bạn có thể có nhiều màn hình này, mỗi màn hình được gán cho một hoặc nhiều màn hình (hoặc theo lý thuyết, chạy mà không cần màn hình; Xvfb khai thác điều này để cho phép bạn chạy X11 mà không cần bất kỳ màn hình nào, chỉ cần ánh xạ GUI vào vùng nhớ cho bất kỳ mục đích nào).


Mir thực sự đã bị bỏ rơi cùng với Unity. Trong một thời gian dài lightdm chứ không phải gdm là mặc định, nhưng có lẽ một phần câu trả lời của bạn đã trở lại chính xác như trước khi Unity đi lên! Tôi sử dụng MATE, vì vậy tôi không thể kiểm tra một cách tầm thường ...
Zanna

Tôi đã chạy Linux từ bảng điều khiển (không có cửa sổ) và điều đó giải thích mọi thứ. Làm cho thực sự có ý nghĩa: p
Jean-Francois T.

3

Từ https://help.ubfox.com/community/En MôiVariables :

Biến- HIỂN THỊ

Ví dụ về giá trị:

:0.0
localhost:10.0
terminal01:0.0

Nó dùng để làm gì?

Biến này được sử dụng để chỉ ra cho các ứng dụng đồ họa nơi hiển thị giao diện người dùng đồ họa thực tế, giá trị bao gồm 3 phần: Tên máy chủ được theo sau bởi dấu hai chấm (:), số hiển thị theo sau là dấu chấm (.) Và màn hình con số.

Phần tên máy chủ có thể được sử dụng để gửi đầu ra đồ họa đến một máy từ xa qua mạng. Nó có thể được bỏ qua khi đầu ra dành cho máy chủ X đang chạy trên máy cục bộ. Số hiển thị cho phép chọn trong số nhiều máy chủ X chạy trên cùng một máy (Ubuntu sử dụng nhiều máy chủ X để bật nhiều phiên máy tính để bàn đồ họa).

Mặc dù số màn hình được sử dụng để chọn trong số nhiều màn hình vật lý được quản lý bởi cùng một máy chủ X, nhưng ngày nay nó hiếm khi được đặt thành bất kỳ thứ gì ngoài "0". Ngày nay, việc cài đặt thủ công giá trị của biến môi trường "HIỂN THỊ" hiếm khi cần thiết vì nó có thể được điều chỉnh tự động và thông minh bởi nhiều ứng dụng như "GDM" và "SSH" khi cần.


3

echo $ HIỂN THỊ sẽ in: 0,0 trên máy của tôi (trên cả hai màn hình). Điều này có nghĩa là gì?

: 0,0 có nghĩa là số hiển thị 0 và số màn hình 0

Trong trường hợp nào $ HIỂN THỊ sẽ để trống hoặc NULL?

Trong trường hợp có lỗi trong $ HIỂN THỊ của bạn và điều này không xảy ra bình thường

Có bất kỳ bài viết hoặc hướng dẫn về điều này?

Một số hướng dẫn và tài nguyên có thể được tìm thấy ở đây:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.