O problema essencial é que os terminais baseados em VTE não lidam com a linha de comando da mesma maneira que o xterm. Isso é ao lado dos possíveis problemas com a opção (desnecessária nesta discussão).
As aspas neste comando
xterm -e "sudo pacman -Syu;bash"
é o problema. Essa string citada é um único token, passado para o xterm como um único parâmetro.
Com o xterm, os tokens após -e
são tentados como parâmetros para uma chamada execv. Caso contrário, ele tentará algo como "${SHELL:-sh}" -c "parameters"
(executa seu shell preferido para interpretar parameters
como uma linha de comando). O konsole faz um ou outro (provavelmente o primeiro, já que esse era o comportamento original do xterm, e a maioria dos designs do konsole data do final dos anos 90). Quando o xterm foi modificado para o luit, a alternativa "falhando" ajudou a passar os parâmetros para o luit.
Os terminais baseados em VTE por um tempo tentaram fazer um aspecto em uma opção de linha de comando e o outro em outra opção (se bem me lembro, -e
e -x
, mas trocando os papéis das duas opções e o assunto de um relatório de bug interessante do Debian que eu não vejo no momento). Na versão atual, tentando
gnome-terminal -e "sudo pacman -Syu;bash"
falha porque só funciona com o comportamento original do tipo xterm. E (tendo em mente que os outros terminais usam versões mais antigas do VTE), uma vez que os desenvolvedores do gnome-terminal (que se sobrepõem aos desenvolvedores VTE ...) perderam a opção -x
um tempo atrás, essa opção não está disponível o comando. Este funciona porque segue o modelo xterm original:
gnome-terminal -e "bash -c \"sudo pacman -Syu;bash\""
A opção -e
é parcialmente endereçada no Debian por um script de shell, que tenta fornecer um conjunto mínimo de opções (incluindo uma para título). A política Debian para isso foi baseada no xterm no final dos anos 90, e tem sido um tópico de discussão mais de uma vez.
Leitura adicional:
- Debian # 648271: 11.8.3 "Pacotes que fornecem um emulador de terminal" diz que o xterm passa a opção -e diretamente para exec
- Debian # 275409: -T não funciona com o provedor do emulador x-terminal
- Gnome # 701691: -e aceita apenas um termo; todos os outros emuladores de terminal aceitam mais de um termo