Quelle est la méthode la plus portable pour lancer un émulateur de terminal?

14

Disons que j'ai besoin d'écrire un script qui lancera un terminal et exécutera une commande et j'en ai besoin pour travailler sur différents systèmes. Comment puis-je le faire de manière sûre et portable?

Est xtermtoujours installé? Je suppose que tout * nix avec une interface graphique doit avoir un émulateur de terminal. Comment puis-je y accéder? Les systèmes Debian ont x-terminal-emulator mais cela, apparemment, ne fonctionne même pas dans Red Hat, encore moins les nix non Linux *.

terdon
la source
Cela pourrait être faisable avecexpect
Red Cricket
@RedCricket expect? Comment? En demandant à l'utilisateur de taper son terminal?
terdon
.. Curieux, pourquoi auriez-vous besoin de faire cela? Nous pouvons peut-être suggérer une autre solution.
user606723
@ user606723 curiosité de base, se demandant s'il existe un émulateur de terminal par défaut défini par POSIX ou opendesktop (on dirait que la réponse est non). Entré en réaction à cette question SU.
terdon
avez-vous vraiment besoin de lancer un émulateur de terminal, ou avez-vous juste besoin d'obtenir un shell. C'est là un besoin tout à fait différent.
Lie Ryan

Réponses:

10

Je ne pense pas que vous puissiez. xtermn'a pas besoin d'être installé partout et n'est probablement pas par défaut. Surtout quand un environnement de bureau est en cours d'utilisation qui fournit son propre terminal.

Je pense que le mieux est sans doute de vérifier l'existence de quelques terminaux différents ( par exemple, xdg-terminal, x-terminal-emulator, gnome-terminal, konsole, xterm). Et peut-être travailler pour que xdg-terminal soit réellement ajouté aux normes FreeDesktop.org.

Ensuite, vous découvrirez que différents terminaux ont différentes manières d'exécuter des commandes, et parfois même des versions différentes du même terminal ... par exemple, voir le bogue Debian # 648271 .

Vous devriez probablement également donner à l'administrateur / utilisateur un moyen de définir une commande personnalisée. Ce sera sûrement nécessaire.

derobert
la source
Oui, cela a été provoqué par une question sur SU et j'espérais qu'il y aurait un moyen plus simple qu'un tas de casedéclarations.
terdon
1
@terdon Je suppose que le moyen le plus simple serait de lister un terminal assez dépendant des dépendances comme exigence pour le script, puis de l'utiliser.
derobert
Que diriez-vous de cette fenêtre de terminal qui apparaissait lorsque je courais xinit? Je ne l'ai pas fait depuis des années, mais cela chargeait un simple serveur X avec une xtermfenêtre vide (?) À partir de laquelle vous pouviez démarrer votre session. Ne pas laisser entendre que certains émulateur de terminal est installé avec X?
terdon
@terdon, c'était le cas, mais les gens de xorg ont divisé X en un paquet de paquets. (Ce terminal était probablement xterm). Mais une vérification rapide montre que je pourrais supprimer xterm de mon système si je le voulais.
derobert
@terdon C'est xterm, l'émulateur de terminal X «par défaut» traditionnel. Mais il n'est pas toujours possible de l'installer. IIRC l'installation par défaut d'Ubuntu ne comprend que gnome-terminal, pas xterm (et pour Kubuntu ce serait konsole, etc.).
Gilles 'SO- arrête d'être méchant'