Cette question a déjà une réponse ici :

Commentaires

  • Cette question nest pas un doublon. La question liée explique le format et la signification de la variable DISPLAY env alors que cette question concerne laffectation de " à une variable denvironnement et le programme concerné doivent être écrits dans la même ligne ".

Réponse

DISPLAY=:0 gnome-panel est une commande shell qui exécute la commande externe gnome-panel avec la variable denvironnement DISPLAY défini sur :0. La syntaxe du shell VARIABLE=VALUE COMMAND définit la variable denvironnement VARIABLE pour la durée de la commande spécifiée uniquement. Cest à peu près équivalent à (export VARIABLE=VALUE; exec COMMAND).

La variable denvironnement DISPLAY indique aux programmes GUI comment communiquer avec linterface graphique. Un système Unix peut exécuter plusieurs serveurs X , cest-à-dire plusieurs affichages. Ces affichages peuvent être des affichages physiques (un ou plusieurs moniteurs), ou des affichages distants (transmis sur le réseau, par exemple via SSH), ou des affichages virtuels tels que Xvfb , etc. La syntaxe de base pour spécifier les affichages est HOST:NUMBER; si vous omettez la partie HOST, laffichage est local.

Les affichages sont numérotés à partir de 0, donc :0 est le premier affichage local qui a été démarré. Sur les configurations typiques, cest ce qui est affiché sur le (s) moniteur (s) de lordinateur.

Comme toutes les variables denvironnement, DISPLAY est hérité du processus parent vers lenfant Par exemple, lorsque vous vous connectez à une session GUI, le gestionnaire de connexion ou le démarreur de session définit DISPLAY de manière appropriée, et la variable est héritée par tous les programmes de la session. Lorsque vous ouvrez une connexion SSH avec transfert X, SSH définit la variable denvironnement DISPLAY sur la connexion transférée, de sorte que les programmes que vous exécutez sur la machine distante soient affichés sur la machine locale. Sil y a pas de connexion X transférée (soit parce que SSH est configuré pour ne pas le faire, soit parce quil ny a pas de serveur X local), SSH ne définit pas DISPLAY.

La définition de DISPLAY entraîne explicitement laffichage du programme à un endroit où il ne se trouverait normalement pas. Par exemple, exécuter DISPLAY=:0 gnome-panel dans un SSH étoile de connexion ts un panneau Gnome sur laffichage local de la machine distante (en supposant quil y en a un et que lutilisateur est autorisé à y accéder). La définition explicite de DISPLAY=:0 est généralement un moyen daccéder à laffichage local dune machine depuis lextérieur de la session locale, par exemple via un accès distant ou à partir dune tâche cron.

Réponse

Cest une variable denvironnement qui est passée uniquement à ce programme, plutôt quau shell dans son ensemble. Cela se produit lorsque vous définissez une variable sur la même ligne quune commande.

Les programmes X11 ont besoin de savoir où afficher les fenêtres, car il sagit dun système client / serveur et que vous pouvez afficher sur une machine distante. Cela signifie simplement utiliser le premier affichage sur la machine locale.

Ceci est normalement configuré automatiquement lors de la connexion à un environnement de bureau. Par exemple, ouvrez un terminal graphique et tapez echo $DISPLAY.

Commentaires

  • la syntaxe bash permet-elle laffectation à une variable env et le programme affecté être écrit sur la même ligne, et séparés par un espace?
  • Oui, ' est exactement comme vous lavez cité dans la question.
  • @Tim Tous les shells compatibles POSIX autorisez cela. Cela signifie définir et exporter la variable denvironnement uniquement pour cette commande, mais ne pas affecter la valeur de la variable shell (si elle a déjà une valeur) par la suite.
  • @MarkPlotnick – it ' un peu plus plus fin que cela. Lors du préfixe dune déclaration de variable à nimporte quelle commande sauf une fonction shell ou une fonction interne spéciale, la déclaration ne doit pas affecter la définition du shell parent ' pour la spécification ' d var, mais lorsque vous le faites pour lun de ces POSIX, la déclaration de variable doit rester. Donc, POSIXLEMENT, one=$1 shift doit définir simultanément la variable shell actuelle $one pour avoir la même valeur que le shell actuel ' s premier positionnel tout en supprimant ledit positionnel. bash, soit dit en passant, ne respecte pas les spécifications par défaut.
  • @mikeserv Merci comme toujours pour la description plus précise et correcte.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *