J'ai ce programme qui peut fonctionner avec une interface utilisateur texte et une interface utilisateur graphique.
Il manque un commutateur de ligne de commande pour forcer l'un ou l'autre, je suppose plutôt qu'il détecte automatiquement si nous sommes en X ou non (par exemple, si je l'exécute à partir d'un terminal virtuel, il passe en mode texte et si je l'exécute à partir de un émulateur de terminal X, il ouvre une fenêtre graphique distincte).
Je voudrais le forcer en mode texte et le faire fonctionner à l'intérieur du terminal X. Comment pourrais-je m'y prendre?
DISPLAY=:0
sont pas définis. Je pense que vous pouvez résoudre ce problème en l'exécutant sous un autre utilisateur et en utilisant iptables pour supprimer le bouclage X11, mais c'est assez dégoûtant.DISPLAY=invalid:0
- être ?env
au lieu d'un sous-shell:env -u DISPLAY emacs foo.c
emacs
possède un indicateur de ligne de commande pour désactiver l'utilisation de X. Il suffit de taperemacs -nw
. Mais si ce n'est pas le cas, vous pouvez utiliser à la placeDISPLAY= emacs
, ce qui fonctionne également.DISPLAY=0.0.0.0:0
échoue instantanément sans effectuer de recherche de serveur de noms.Si vous souhaitez désactiver X pour une seule commande, vous pouvez écrire
Remarquez l'espace vide stratégique après
=
. Plus généralement, vous pouvez définir des variables d'environnement pour un processus en préfixant votre commande avec une séquence d'<variable>=<value>
espaces séparés par. Puisque l'espace sert de séparateur,=
immédiatement suivi d'un espace efface la variable précédente. Nous pouvons examiner l'effet de ces préfixes en utilisant un sous-shell comme commande, puis en imprimant son environnement. Prenez par exemple:Cela imprimera
Cela montre que l'environnement de la sous-coque est en effet différent comme prévu. Notez que la substitution de shell se produit avant que les arguments individuels ne soient passés à
echo
, il n'y a donc qu'un seul espace entreb
etd
dans la sortie, comme si la ligne de commande l'étaitecho a b d
(avec deux espaces).la source