Clique duas vezes no Shell Script no Ubuntu 16.04 O Nautilus apenas dá ao usuário a opção de editar o arquivo de script shell

2
When I follow the steps in 

[ link

Eu costumava obter uma caixa de diálogo perguntando se eu queria executar o script de shell ou editá-lo usando o gedit. Eu apenas reinstalei o Ubuntu Linux 16.04 com um LiveCD e executei o sudo apt-get install mono-completo. Agora, quando clico duas vezes no shell script no Ubuntu 16.04, o Nautilus só pode editar o arquivo de script de shell.

The contents of this shell script are:

#!/bin/bash
exec /usr/bin/mono-service.exe ./AudioRecorder.exe  "$@".

as specified in 

  [http://www.mono-project.com/archived/guiderunning_mono_applications/]

Por que esse problema está ocorrendo e como podemos corrigi-lo, então dê um duplo clique no script de shell no Nautilus me pergunta se deseja executar o arquivo de script de shell?

Qualquer ajuda é muito apreciada.

    
por Frank 28.05.2016 / 04:29

2 respostas

2

Primeiro de tudo, /usr/bin/mono-service.exe não existe.

Em seguida, de acordo com o seu link postado . Seu script deve ler algo assim:

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ./AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono-service ./AudioRecorder.exe  "$@"

ou

#!/bin/bash
mono ./AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono ./AudioRecorder.exe  "$@"

No entanto, eles só funcionarão se o arquivo exe estiver em sua pasta pessoal e, idealmente, devem incluir o caminho real para o arquivo exe, como o seguinte, se o arquivo exe estiver em sua pasta pessoal:

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ~/AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono-service ~/AudioRecorder.exe  "$@"

ou

#!/bin/bash
mono ~/AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono ~/AudioRecorder.exe  "$@"

Como alternativa, se o arquivo estiver na pasta "Downloads":

#!/bin/sh
/usr/bin/mono /usr/lib/mono/4.5/mono-service.exe ~/Downloads/AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono-service ~/Downloads/AudioRecorder.exe  "$@"

ou

#!/bin/bash
mono ~/Downloads/AudioRecorder.exe  "$@"

ou

#!/bin/sh
/usr/bin/mono ~/Downloads/AudioRecorder.exe  "$@"
    
por 28.05.2016 / 07:16
0

Aqui está o URL que encontrei que responde à pergunta.

Clique duas vezes em Linux Bash Script e depure com comandos de pausa

A resposta do @Terdon é muito legal:

Your script needs a terminal for you to interact with it. One way of doing that is what @Sebastian suggested. However, note that bash scripts are not really designed to be run this way. A cleaner way would be to write a .desktop file that launches your script and then double click that. Something like:

[Desktop Entry]
Exec=/home/user/yourscript.sh
Terminal=true
Type=Application

Save that file as foo.desktop in your ~/Desktop folder. That will now appear as an icon there and double clicking it will cause your script to be run in a terminal. Obviously, you need to change /home/user/yourscript.sh to the actual path of your script.

Uma questão permanece em aberto: Com o emulador de @ terdon, como eu posso redirecionar stdin, stdout e stderr para / dev / null?

[EDIT 2 de junho de 2016 às 4:30 da manhã A maneira de redirecionar stdout e stderr é executar exec mono-service ./AudioRecorder.exe & , no fundo]

    
por 28.05.2016 / 06:46