Was ist die portabelste Methode zum Starten eines Terminalemulators?

14

Angenommen, ich muss ein Skript schreiben, das ein Terminal startet und einen Befehl ausführt, und das muss auf verschiedenen Systemen funktionieren. Wie kann ich das sicher und portabel machen?

Wird xtermimmer installiert? Ich gehe davon aus, dass jedes * nix mit einer GUI einen Terminalemulator haben muss. Wie komme ich dorthin? Debian-Systeme haben, x-terminal-emulator aber das funktioniert anscheinend nicht einmal in Red Hat, geschweige denn in Nicht-Linux-Nixen.

terdon
quelle
Dies könnte machbar sein mitexpect
Red Cricket
@RedCricket expect? Wie? Indem Sie den Benutzer bitten, sein Terminal einzugeben?
Terdon
.. Neugierig, warum müsstest du das tun? Vielleicht können wir eine alternative Lösung vorschlagen.
user606723
@ user606723 Grundlegende Neugierde: Gibt es einen POSIX- oder opendesktop-definierten Standard-Terminalemulator? Kam als Reaktion auf diese SU-Frage.
Terdon
Müssen Sie wirklich einen Terminal-Emulator starten, oder brauchen Sie nur eine Shell? Das ist dort ein ganz anderes Bedürfnis.
Lie Ryan

Antworten:

10

Ich glaube nicht, dass du kannst. xtermmuss nicht überall installiert werden und ist in der Tat wahrscheinlich nicht standardmäßig. Insbesondere, wenn eine Desktop-Umgebung verwendet wird, die ein eigenes Terminal bereitstellt.

Ich denke , Ihre beste Wette wahrscheinlich für die Existenz von einigen unterschiedlichen Endgeräten zu prüfen ist (sagen wir xdg-terminal, x-terminal-emulator, gnome-terminal, konsole, xterm). Und vielleicht arbeiten wir daran, dass xdg-terminal tatsächlich zu den FreeDesktop.org-Standards hinzugefügt wird.

Dann werden Sie feststellen, dass verschiedene Terminals unterschiedliche Arten haben, Befehle auszuführen, und manchmal sogar unterschiedliche Versionen desselben Terminals ... siehe z. B. Debian Bug # 648271 .

Sie sollten dem Administrator / Benutzer wahrscheinlich auch die Möglichkeit geben, einen benutzerdefinierten Befehl festzulegen. Es wird sicherlich gebraucht.

derobert
quelle
Ja, dies wurde durch eine Frage zu SU veranlasst und ich hoffte, dass es einen einfacheren Weg als eine Reihe von caseAussagen geben würde.
Terdon
1
@terdon Ich denke, der einfache Weg wäre, ein relativ abhängiges Terminal als Voraussetzung für das Skript aufzulisten und es dann einfach zu verwenden.
Derobert
Wie wäre es mit dem Terminalfenster, das beim Ausführen angezeigt wurde xinit? Das habe ich seit Jahren nicht mehr gemacht, aber das hat früher einen einfachen X-Server mit einem leeren xterm(?) Fenster geladen, von dem aus Sie Ihre Sitzung starten konnten. Bedeutet das nicht, dass ein Terminalemulator mit X installiert ist?
terdon
@terdon war es früher, aber dann teilten die Xorg-Leute X in eine Reihe von Paketen auf. (Das Terminal war wahrscheinlich xterm). Eine kurze Überprüfung zeigt jedoch, dass ich xterm von meinem System entfernen könnte, wenn ich wollte.
Derobert
@terdon Das ist xterm, der traditionelle "Standard" -X-Terminalemulator. Es muss aber nicht immer installiert sein. IIRC Die Ubuntu-Standardinstallation enthält nur das Gnome-Terminal, nicht xterm (und für Kubuntu wäre es die Konsole usw.).
Gilles 'SO- hör auf böse zu sein'