exec -t é inválido

1

Fiz um rpm que instala um arquivo .run e sempre que executo o rpm e o rpm tenta executar o arquivo .run eu continuo recebendo o erro que exec -t is an invalid option nas seguintes linhas de código

if test 'echo "$0" | cut -c1' = "/"; then # Spawn a terminal!
                    exec $XTERM -title "$label" -e "$0" --xwin "$initargs"
                else
                    exec $XTERM -title "$label" -e "./$0" --xwin "$initargs"

No entanto, se eu executar o .run sozinho, ele será instalado corretamente. Por que isso pode estar acontecendo? Além disso, o que a declaração if faz nesse código?

    
por jgr208 01.10.2014 / 15:35

1 resposta

1

Sugestão 1

Eu não acho que você pode executar um XTERM como este desde que o RPM quando está sendo instalado é executado sob um ID de usuário diferente (root) do que o uso que possui a área de trabalho.

Para que isso funcione, no mínimo, você precisaria executar xhost + em sua área de trabalho principal como seu ID de usuário e, em seguida, definir a variável de ambiente $DISPLAY nessa chamada para XTERM. Algo como isso pode funcionar:

exec DISPLAY=:0.0 $XTERM .....

Acho que o XTERM também pode usar a opção -display para fazer algo semelhante, mas não tenho a mão no momento.

Sugestão # 2

Se você encontrar um "exec -t é uma opção inválida", suspeito que a variável, $XTERM , esteja sendo desfeita, resultando no comando exec -title ... sendo executado e falhando.

Exemplo
$ exec -title "blah" -e "bash"
bash: exec: -t: invalid option
exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]

No entanto, quando defino $XTERM e repito, funciona:

$ XTERM=xterm
$ exec $XTERM -title "blah" -e "bash"

    
por 01.10.2014 / 15:58