Posso abrir um novo terminal com um novo binário em execução nele?

2

Eu tentei escrever um script que abre um novo xterminal com algum arquivo binário (não comando) em execução nele. O script inteiro é assim:

#!/bin/bash

XTERM="/usr/bin/xterm -bg WHITE -e /home/ambuj/practice/myBinary"
exec $XTERM 2>&1 &

O script termina sem fazer nada. Estou usando o Ubuntu 12.04 LTS.

    
por Ambuj Mani Tripathi 01.03.2014 / 10:54

1 resposta

1

Eu tentei usar um script semelhante para executar um script e um executável. Funciona em ambos os casos.

  • Caso de um executável /usr/bin/xlogo :

    #!/bin/bash  
    XTERM="/usr/bin/xterm -bg RED -e /usr/bin/xlogo"
    exec $XTERM 2>&1 &
    
         

    O terminal inicia, então ele faz o binário xlogo ; o shell original me retorna o prompt, porque o script termina sua execução. Nenhum erro é retornado.
      ( termina bem porque o xterm começa ).
      Se eu pressionar CTRL + C quando o foco estiver na janela xterm eu interrompo a sessão xterm e o executável. Se eu fechar o executável, a sessão xterm terminará também.

  • Caso de um script, que eu faço executável com chmod u+x MyScript.sh

    #!/bin/bash
    pwd         # To confirm in which directory it works
    echo Please insert something 
    read a      # It asks to input something 
    echo inserted $a We sleep for 10 seconds
    sleep 10    # It will wait 10 seconds to exit  
    
         

    Ele é executado novamente, como no caso binário.
      Se eu tentar interromper o script, isso terminará a sessão xterm também.
      Isso mostra claramente que a sessão xterm é executada a partir do caminho atual.

Portanto, se o seu arquivo é executável, não faz diferença se for um binário ou um script.

Lista de verificação de depuração clássica:

  1. Verifique se você pode executar /usr/bin/xterm
  2. Verifique se é executável (no seu exemplo com ls -l /home/ambuj/practice/myBinary ).

  3. Se for executável, tente executá-lo a partir da localização atual (diretório) para ver se ele precisa ser executado de um determinado caminho se precisar de algum arquivo em algum lugar, ou se é compilado para sua arquitetura ...

Note que se a execução do seu binário (ou script) terminar sua sessão de terminal será finalizada imediatamente após , e não importa se por causa de um erro ou por causa de uma razões naturais .

Nunca esqueça que o erro mais difícil de encontrar é o que não existe: por isso, se o seu programa for executado e terminar rapidamente, parece-lhe que o seu xterm irá abrir e fechar sem fazer nada.

    
por Hastur 07.06.2014 / 18:14