Jaka jest najbardziej przenośna metoda uruchomienia emulatora terminala?

14

Powiedz, że muszę napisać skrypt, który uruchomi terminal i wykona polecenie, i potrzebuję go do pracy na różnych systemach. Jak mogę to zrobić w bezpieczny i przenośny sposób?

Czy xtermzawsze jest zainstalowany? Zakładam, że każdy * nix z GUI musi mieć emulator terminala. Jak mogę się do tego dostać? Systemy Debian mają, x-terminal-emulator ale najwyraźniej nie działa nawet w Red Hat, nie mówiąc już o innych niż Linux * komponentach.

terdon
źródło
Można to zrobić za pomocąexpect
Red Cricket,
@RedCricket expect? W jaki sposób? Pytając użytkownika o wpisanie terminala?
terdon
.. Ciekawe, dlaczego miałbyś to robić? Być może możemy zaproponować alternatywne rozwiązanie.
user606723,
@ user606723 podstawowa ciekawość, zastanawianie się, czy istnieje coś takiego jak POSIX lub domyślny emulator terminala zdefiniowany przez opendesktop (wygląda na to, że odpowiedź brzmi nie). Przyszedł jako reakcja na to pytanie SU.
terdon
czy naprawdę potrzebujesz uruchomić emulator terminala, czy po prostu potrzebujesz powłoki? To tam zupełnie inna potrzeba.
Lie Ryan,

Odpowiedzi:

10

Nie sądzę, że możesz. xtermnie muszą być instalowane wszędzie i rzeczywiście prawdopodobnie nie są domyślnie. Zwłaszcza gdy używane jest środowisko pulpitu, które zapewnia własny terminal.

Myślę, że najlepiej będzie prawdopodobnie w celu sprawdzenia istnienia kilku różnych terminali (powiedzmy xdg-terminal, x-terminal-emulator, gnome-terminal, konsole, xterm). I może staramy się, aby xdg-terminal faktycznie został dodany do standardów FreeDesktop.org.

Następnie przekonasz się, że różne terminale mają różne sposoby uruchamiania poleceń, a czasem nawet różne wersje tego samego terminala ... np. Zobacz Bug Debian # 648271 .

Prawdopodobnie powinieneś także dać administratorowi / użytkownikowi możliwość ustawienia niestandardowego polecenia. To na pewno będzie potrzebne.

derobert
źródło
Tak, było to spowodowane pytaniem na temat SU i miałem nadzieję, że będzie prostszy sposób niż kilka casestwierdzeń.
terdon
1
@terdon Wydaje mi się, że najprostszym sposobem byłoby wyszczególnienie dość lekkiego terminalu zależności jako wymogu dla skryptu, a następnie po prostu go użyć.
derobert
Co powiesz na to okno terminala, które pojawiało się podczas uruchamiania xinit? Nie robiłem tego od lat, ale zwykło to ładować prosty serwer X z pustym xterm(?) Oknem, z którego można rozpocząć sesję. Czy to nie oznacza, że jakiś emulator terminala jest zainstalowany z X?
terdon
@terdon kiedyś tak było, ale później ludzie z Xorg podzielili X na kilka pakietów. (Ten terminal był prawdopodobnie xterm). Ale szybki test pokazuje, że mógłbym usunąć xterm z mojego systemu, gdybym chciał.
derobert
@terdon To xterm, tradycyjny „domyślny” emulator terminala X. Ale nie zawsze może być zainstalowany. IIRC domyślna instalacja Ubuntu obejmuje tylko terminal gnome, a nie xterm (dla Kubuntu byłaby to konsola itp.).
Gilles „SO- przestań być zły”,