Qual é o método mais portátil de iniciar um emulador de terminal?

14

Digamos que eu precise escrever um script que inicie um terminal e execute um comando e que ele funcione em vários sistemas. Como posso fazer isso de maneira segura e portátil?

xtermSempre está instalado? Presumo que qualquer * nix com uma GUI deve ter algum emulador de terminal. Como posso chegar a isso? Os sistemas Debian têm, x-terminal-emulator mas aparentemente não funcionam no Red Hat, muito menos em nix não Linux *.

terdon
fonte
Isso pode ser factível comexpect
Red Cricket
@RedCricket expect? Quão? Pedindo ao usuário que digite seu terminal?
terdon
.. Curioso, por que você precisaria fazer isso? Talvez possamos sugerir uma solução alternativa.
user606723
@ user606723 curiosidade básica, imaginando se existe um emulador de terminal padrão definido por POSIX ou opendesktop (parece que a resposta é não). Veio como uma reação a esta questão SU.
terdon
você realmente precisa iniciar um emulador de terminal ou precisa apenas de um shell. Essa é uma necessidade bem diferente lá.
Lie Ryan

Respostas:

10

Eu não acho que você pode. xtermnão precisa ser instalado em todos os lugares e, na verdade, provavelmente não é por padrão. Especialmente quando está em uso um ambiente de desktop que fornece seu próprio terminal.

Eu acho que sua melhor aposta é provavelmente a verificar a existência de alguns terminais diferentes (digamos, xdg-terminal, x-terminal-emulator, gnome-terminal, konsole, xterm). E talvez trabalhe para que o xdg-terminal seja realmente adicionado aos padrões do FreeDesktop.org.

Então você descobrirá que terminais diferentes têm maneiras diferentes de executar comandos, e às vezes até versões diferentes do mesmo terminal ... por exemplo, veja o Debian Bug # 648271 .

Você provavelmente também deve dar ao administrador / usuário uma maneira de definir um comando personalizado. Certamente será necessário.

derobert
fonte
Sim, isso foi motivado por uma pergunta no SU e eu esperava que houvesse uma maneira mais simples do que um monte de casedeclarações.
terdon
1
@terdon Eu acho que a maneira mais simples seria listar um terminal relativamente leve como dependência, como requisito para o script, e apenas usá-lo.
Derobert 20/09/2013
E a janela do terminal que costumava aparecer quando eu corria xinit? Faz isso há anos, mas isso costumava carregar um servidor X simples com uma xtermjanela vazia (?) A partir da qual você poderia iniciar sua sessão. Isso não implica que algum emulador de terminal esteja instalado com o X?
terdon
@terdon costumava ser, mas então o pessoal do xorg dividiu o X em vários pacotes. (Esse terminal provavelmente era xterm). Mas uma verificação rápida mostra que eu poderia remover o xterm do meu sistema, se quisesse.
derobert
@terdon Esse é o xterm, o tradicional emulador de terminal X “padrão”. Mas nem sempre pode ser instalado. No IIRC, a instalação padrão do Ubuntu inclui apenas o gnome-terminal, não o xterm (e para o Kubuntu seria o konsole, etc.).
Gilles 'SO- stop be evil'