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:
- Verifique se você pode executar
/usr/bin/xterm
-
Verifique se é executável (no seu exemplo com
ls -l /home/ambuj/practice/myBinary
). -
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.