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?
xterm
Sempre 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 *.
terminal-emulator
portability
terdon
fonte
fonte
expect
expect
? Quão? Pedindo ao usuário que digite seu terminal?Respostas:
Eu não acho que você pode.
xterm
nã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.
fonte
case
declarações.xinit
? Faz isso há anos, mas isso costumava carregar um servidor X simples com umaxterm
janela 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?Sim, você precisa usar um invólucro. Há uma boa incluída no i3 WM. Explicado aqui: http://build.i3wm.org/docs/i3-sensible-terminal.html
Basta copiar isso para uma função shell no seu script: http://code.stapelberg.de/git/i3/tree/i3-sensible-terminal
fonte
which
que é uma má idéia )