it-swarm.com.de

Wie man ein Programm dazu bringt zu glauben, dass kein X-Server läuft

Ich habe dieses Programm, das sowohl mit einer Textbenutzeroberfläche als auch mit einer grafischen Benutzeroberfläche ausgeführt werden kann.

Es fehlt ein Befehlszeilenschalter, um das eine oder andere zu erzwingen. Ich denke, es erkennt irgendwie automatisch, ob wir uns in X befinden oder nicht (z. B. wenn ich es von einem virtuellen Terminal aus starte, wechselt es in den Textmodus und wenn ich es ausführe ein X-Terminal-Emulator öffnet ein separates grafisches Fenster).

Ich möchte es in den Textmodus zwingen und es im X-Terminal laufen lassen. Wie würde ich das machen?

28
Luka Aleksić

Normalerweise nur

unset DISPLAY

in der Kommandozeile des Terminals. Einige Anwendungen sind intelligenter als diese und überprüfen tatsächlich die Berechtigungen und den Typ der Konsole im Vergleich zu Pseudoterminal.

40
Thomas Dickey

Wenn Sie X für einen einzelnen Befehl deaktivieren möchten, können Sie schreiben

DISPLAY= ./my_command

Beachten Sie das strategische Leerzeichen nach =. Im Allgemeinen können Sie Umgebungsvariablen für einen Prozess festlegen, indem Sie Ihrem Befehl eine durch Leerzeichen getrennte Folge von <variable>=<value> Vorstellen. Da Leerzeichen als Trennzeichen dienen, löscht = Unmittelbar gefolgt von einem Leerzeichen die vorhergehende Variable. Wir können die Auswirkung dieser Präfixe untersuchen, indem wir eine Unterschale als Befehl verwenden und dann ihre Umgebung drucken. Nimm zum Beispiel:

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

Dies wird gedruckt

a b d

Dies zeigt, dass die Umgebung der Unterschale tatsächlich wie beabsichtigt unterschiedlich ist. Beachten Sie, dass die Shell-Ersetzung erfolgt, bevor die einzelnen Argumente an echo übergeben werden, sodass zwischen b und d in der Ausgabe nur ein Leerzeichen steht, als wäre dies die Befehlszeile echo a b d (Mit zwei Leerzeichen).

31
tobi_s