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 entre 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?
Habituellement juste
unset DISPLAY
en ligne de commande du terminal. Certaines applications sont plus intelligentes que cela et vérifient réellement les autorisations et le type de console par rapport au pseudoterminal.
Si vous souhaitez désactiver X pour une seule commande, vous pouvez écrire
DISPLAY= ./my_command
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 de <variable>=<value>
séparés par des espaces. 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:
$ A=a B=b C= D=d sh
$ echo $A $B $C $D
Cela imprimera
a b d
Cela montre que l'environnement de la sous-coque est en effet différent comme prévu. Notez que la substitution Shell se produit avant que les arguments individuels ne soient passés à echo
, donc il n'y a qu'un seul espace entre b
et d
dans la sortie, comme si la ligne de commande était echo a b d
(avec deux espaces).